Exemple #1
0
    def _read_mat2(self, data, n):
        """
        MAT2(203,2,78) - record 3
        """
        ntotal = 68  # 17*4
        s = Struct(self._endian + b'i15fi')
        nmaterials = (len(data) - n) // ntotal
        nbig_materials = 0
        for i in range(nmaterials):
            edata = data[n:n+68]
            out = s.unpack(edata)
            if self.is_debug_file:
                self.binary_debug.write('  MAT2=%s\n' % str(out))
            (mid, g1, g2, g3, g4, g5, g6, rho, aj1, aj2, aj3,
             tref, ge, St, Sc, Ss, mcsid) = out
            #print("MAT2 = ",out)
            mat = MAT2.add_op2_data(out)

            if 0 < mid <= 1e8:  # just a checker for out of range materials
                self.add_op2_material(mat)
            else:
                nbig_materials += 1
                self.big_materials[mid] = mat
            n += ntotal

        ncards = nmaterials - nbig_materials
        if ncards:
            self.card_count['MAT2'] = ncards
        return n
Exemple #2
0
    def _read_mat2(self, data: bytes, n: int) -> int:
        """
        MAT2(203,2,78) - record 3
        """
        ndatai = len(data) - n
        if ndatai % 68 == 0:
            ntotal = 68  # 17*4
            s = Struct(self._endian + b'i15fi')
        else:
            ntotal = (17 + 6) * 4
            nleftover = ndatai % ntotal
            s = Struct(self._endian + b'i15fi 6i')
            self.log.warning(
                f'unexpected MAT2 format; ndatai={ndatai} ntotal={ntotal} nmaterials={ndatai // ntotal} '
                f'leftover={ndatai % ntotal}')
            assert nleftover == 0, nleftover
        nmaterials = ndatai // ntotal

        nbig_materials = 0
        for unused_i in range(nmaterials):
            edata = data[n:n + ntotal]
            out = s.unpack(edata)
            if self.is_debug_file:
                self.binary_debug.write('  MAT2=%s\n' % str(out))
            if ntotal == 68:
                (mid, g1, g2, g3, g4, g5, g6, rho, aj1, aj2, aj3, tref, ge, St,
                 Sc, Ss, mcsid) = out
                mat = MAT2.add_op2_data(out)
            else:
                (mid, g1, g2, g3, g4, g5, g6, rho, aj1, aj2, aj3, tref, ge, St,
                 Sc, Ss, mcsid, *blanks) = out
                mat = MAT2.add_op2_data(out)
                self.log.debug(mat)
            #print("MAT2 = ",out)

            if 0 < mid <= 1e8:  # just a checker for out of range materials
                self.add_op2_material(mat)
            else:
                nbig_materials += 1
                self.big_materials[mid] = mat
            n += ntotal

        ncards = nmaterials - nbig_materials
        if ncards:
            self.card_count['MAT2'] = ncards
        return n
Exemple #3
0
    def readMAT2(self, data):
        """
        MAT2(203,2,78) - record 3
        """
        #print "reading MAT2"
        while len(data) >= 68:  # 17*4
            data = data[68:]
            out = unpack('ifffffffffffffffi', data[:68])
            (mid, g1, g2, g3, g4, g5, g6, rho, aj1, aj2, aj3, TRef, ge, St, Sc,
             Ss, mcsid) = out
            #print "MAT2 = ",out
            mat = MAT2(None, out)

            if mid > 1e8 or mid < 0:  # just a checker for out of range materials
                self.bigMaterials[mid] = mat
            else:
                self.addOp2Material(mat)
Exemple #4
0
    def _read_mat2(self, data, n):
        """
        MAT2(203,2,78) - record 3
        """
        ntotal = 68  # 17*4
        s = Struct(b(self._endian + 'i15fi'))
        nmaterials = (len(data) - n) // ntotal
        for i in range(nmaterials):
            edata = data[n:n+68]
            out = s.unpack(edata)
            (mid, g1, g2, g3, g4, g5, g6, rho, aj1, aj2, aj3,
             tref, ge, St, Sc, Ss, mcsid) = out
            #print("MAT2 = ",out)
            mat = MAT2.add_op2_data(out)

            if 0 < mid <= 1e8:  # just a checker for out of range materials
                self.add_op2_material(mat)
            else:
                self.big_materials[mid] = mat
            n += ntotal
        self.card_count['MAT2'] = nmaterials
        return n
    def _read_mat2(self, data, n):
        """
        MAT2(203,2,78) - record 3
        """
        ntotal = 68  # 17*4
        s = Struct(b(self._endian + 'i15fi'))
        nmaterials = (len(data) - n) // ntotal
        for i in range(nmaterials):
            edata = data[n:n+68]
            out = s.unpack(edata)
            (mid, g1, g2, g3, g4, g5, g6, rho, aj1, aj2, aj3,
             TRef, ge, St, Sc, Ss, mcsid) = out
            #print "MAT2 = ",out
            mat = MAT2.add_op2_data(out)

            if mid > 1e8 or mid < 0:  # just a checker for out of range materials
                self.big_materials[mid] = mat
            else:
                self.add_op2_material(mat)
            n += ntotal
        self.card_count['MAT2'] = nmaterials
        return n
Exemple #6
0
    def _readMAT2(self, data, n):
        """
        MAT2(203,2,78) - record 3
        """
        #print "reading MAT2"
        ntotal = 68  # 17*4
        s = Struct(b'i15fi')
        nmaterials = (len(data) - n) // ntotal
        for i in xrange(nmaterials):
            edata = data[n:n+68]
            out = s.unpack(edata)
            (mid, g1, g2, g3, g4, g5, g6, rho, aj1, aj2, aj3,
                TRef, ge, St, Sc, Ss, mcsid) = out
            #print "MAT2 = ",out
            mat = MAT2(None, out)

            if mid > 1e8 or mid < 0:  # just a checker for out of range materials
                self.bigMaterials[mid] = mat
            else:
                self.addOp2Material(mat)
            n += ntotal
        self.card_count['MAT2'] = nmaterials
        return n