Example #1
0
    def readTable_LAMA_4(self, iTable):  # iTable=-4
        bufferWords = self.getMarker()  # 70*4=280
        if self.makeOp2Debug:
            self.op2Debug.write('bufferWords=%s\n' % (str(bufferWords)))
        #print "2-bufferWords = ",bufferWords,bufferWords*4,'\n'

        data = self.getData(4)  # dummy - 70*4=280
        #print self.printBlock(data)
        #print "280/3 = ",280/4
        nModes = bufferWords // 7

        lama = RealEigenvalues(self.iSubcase)
        self.eigenvalues[self.iSubcase] = lama
        for i in xrange(nModes):
            data = self.getData(28)  # 4*7
            out = unpack('iifffff', data)
            #(iMode,order,eigen,omega,freq,mass,stiff) = out
            #(modeNum,extractOrder,eigenvalue,radian,cycle,genM,genK) = line
            #print out
            lama.addF06Line(out)
            #print "mode=%s order=%s eigen=%s omega=%s freq=%s mass=%s stiff=%s" %(mode,order,eigen,omega,freq,mass,stiff)
        #print ""
        #print ''.join(msg)
        #print "self.iSubcase = ",self.iSubcase
        #print lama.writeF06([],'PAGE',1)[0]
        #sys.exit()
#                       '        1         1        8.232776E+06        2.869281E+03        4.566603E+02        8.719168E-03        7.178296E+04
#                       '        2         2        8.232776E+06        2.869281E+03        4.566603E+02        8.719168E-03        7.178296E+04

        data = self.getData(4)
Example #2
0
    def _read_real_eigenvalue_4(self, data, ndata):
        """parses the Real Eigenvalues Table 4 Data"""
        op2 = self.op2
        if self.read_mode == 1:
            return ndata

        op2_reader = self.op2_reader
        #self.show_data(data)
        nmodes = ndata // 28
        n = 0
        ntotal = 28
        #assert op2.isubcase != 0, op2.isubcase
        lama = RealEigenvalues(op2.title, nmodes=nmodes)
        op2.eigenvalues[op2_reader.title] = lama
        structi = Struct(self._endian + b'ii5f')
        for i in range(nmodes):
            edata = data[n:n + 28]
            out = structi.unpack(edata)
            if self.is_debug_file:
                self.binary_debug.write('  eigenvalue%s - %s\n' %
                                        (i, str(out)))
            #(imode, extract_order, eigenvalue, radian, cycle, gen_mass, gen_stiffness) = out
            lama.add_f06_line(out, i)
            n += ntotal
        return n
Example #3
0
    def _read_real_eigenvalue_4(self, data: bytes, ndata: int):
        """parses the Real Eigenvalues Table 4 Data"""
        if self.read_mode == 1:
            return ndata
        nmodes = ndata // 28
        n = 0
        ntotal = 28
        #assert self.isubcase != 0, self.isubcase
        lama = RealEigenvalues(self.title, self.table_name, nmodes=nmodes)

        if self.table_name in [b'LAMA', b'LAMAS']:
            result_name = 'eigenvalues'
        elif self.table_name == b'LAMAF':
            result_name = 'eigenvalues_fluid'
        else:  # pragma: no cover
            raise NotImplementedError(self.table_name)
        slot = getattr(self, result_name)
        #assert self.title not in slot, f'{result_name}: table={self.table_name_str} title={self.title!r} optimization_count={self._count}'
        slot[self.title] = lama

        structi = Struct(self._endian + b'ii5f')
        for i in range(nmodes):
            edata = data[n:n + 28]
            out = structi.unpack(edata)
            if self.is_debug_file:
                self.binary_debug.write('  eigenvalue%s - %s\n' %
                                        (i, str(out)))
            #(imode, extract_order, eigenvalue, radian, cycle, gen_mass, gen_stiffness) = out
            lama.add_f06_line(out, i)
            n += ntotal
        return n
Example #4
0
    def _real_eigenvalues(self):
        """
        ::

                                                     R E A L   E I G E N V A L U E S
           MODE    EXTRACTION      EIGENVALUE            RADIANS             CYCLES            GENERALIZED         GENERALIZED
            NO.       ORDER                                                                       MASS              STIFFNESS
                1         1        6.158494E+07        7.847607E+03        1.248985E+03        1.000000E+00        6.158494E+07
        """
        self.Title = None
        (subcase_name, isubcase, transient, dt, analysis_code,
         is_sort1) = self._read_f06_subcase_header()
        Title = None
        line1 = self.infile.readline().strip()
        self.i += 1
        if line1 != 'MODE    EXTRACTION      EIGENVALUE            RADIANS             CYCLES            GENERALIZED         GENERALIZED':
            Title = line1
            line1 = self.infile.readline().strip()
            self.i += 1
        line2 = self.infile.readline().strip()
        self.i += 1

        #MODE    EXTRACTION      EIGENVALUE            RADIANS             CYCLES            GENERALIZED         GENERALIZED
        # NO.       ORDER                                                                       MASS              STIFFNESS
        #     1         1        1.018377E-03        3.191203E-02        5.078956E-03        1.000000E+00        1.018377E-03
        #print(line1)
        #print(line2)
        #headers = self.skip(2)
        #print(headers)
        data = self._read_f06_table(
            [int, int, float, float, float, float, float])

        self.eigenvalues[self.Title] = RealEigenvalues(Title)
        self.eigenvalues[self.Title].add_f06_data(data)
Example #5
0
def _load_eigenvalue(h5_result, log):
    """Loads a RealEigenvalue"""
    class_name = _cast(h5_result.get('class_name'))
    title = ''
    nmodes = _cast(h5_result.get('nmodes'))
    if class_name == 'RealEigenvalues':
        obj = RealEigenvalues(title, nmodes=nmodes)
    elif class_name == 'ComplexEigenvalues':
        obj = ComplexEigenvalues(title, nmodes)
    elif class_name == 'BucklingEigenvalues':
        obj = BucklingEigenvalues(title, nmodes=nmodes)
    else:
        log.warning('  %r is not supported...skipping' % class_name)
        return None

    assert obj.class_name == class_name, 'class_name=%r selected; should be %r' % (obj.class_name, class_name)
    keys_to_skip = ['class_name', 'is_complex', 'is_real']
    for key in h5_result.keys():
        if key in keys_to_skip:
            continue
        else:
            datai = _cast(h5_result.get(key))
            assert not isinstance(datai, binary_type), key
            setattr(obj, key, datai)
    return obj
Example #6
0
 def _read_real_eigenvalue_4(self, data):
     if self.read_mode == 1:
         return len(data)
     #self.show_data(data)
     nModes = len(data) // 28
     n = 0
     ntotal = 28
     #assert self.isubcase != 0, self.isubcase
     lama = RealEigenvalues(self.Title)
     self.eigenvalues[self.Title] = lama
     s = Struct('ii5f')
     for i in range(nModes):
         edata = data[n:n+28]
         out = s.unpack(edata)
         if self.debug4():
             self.binary_debug.write('  eigenvalue%s - %s\n' % (i, str(out)))
         #(iMode, order, eigen, omega, freq, mass, stiff) = out
         (modeNum, extractOrder, eigenvalue, radian, cycle, genM, genK) = out
         #print(out)
         lama.addF06Line(out)
         n += ntotal
     return n
Example #7
0
 def _read_real_eigenvalue_4(self, data, ndata):
     """parses the Real Eigenvalues Table 4 Data"""
     if self.read_mode == 1:
         return ndata
     #self.show_data(data)
     nModes = ndata // 28
     n = 0
     ntotal = 28
     #assert self.isubcase != 0, self.isubcase
     lama = RealEigenvalues(self.title)
     self.eigenvalues[self.title] = lama
     s = Struct('ii5f')
     for i in range(nModes):
         edata = data[n:n+28]
         out = s.unpack(edata)
         if self.is_debug_file:
             self.binary_debug.write('  eigenvalue%s - %s\n' % (i, str(out)))
         #(imode, order, eigen, omega, freq, mass, stiff) = out
         (imode, extract_order, eigenvalue, radian, cycle, genM, genK) = out
         lama.add_f06_line(out)
         n += ntotal
     return n
Example #8
0
 def _read_real_eigenvalue_4(self, data, ndata):
     """parses the Real Eigenvalues Table 4 Data"""
     if self.read_mode == 1:
         return ndata
     #self.show_data(data)
     nModes = ndata // 28
     n = 0
     ntotal = 28
     #assert self.isubcase != 0, self.isubcase
     lama = RealEigenvalues(self.title)
     self.eigenvalues[self.title] = lama
     s = Struct('ii5f')
     for i in range(nModes):
         edata = data[n:n + 28]
         out = s.unpack(edata)
         if self.is_debug_file:
             self.binary_debug.write('  eigenvalue%s - %s\n' %
                                     (i, str(out)))
         #(imode, order, eigen, omega, freq, mass, stiff) = out
         (imode, extract_order, eigenvalue, radian, cycle, genM, genK) = out
         lama.add_f06_line(out)
         n += ntotal
     return n
Example #9
0
    def getRealEigenvalues(self):
        """
        @code
                                                   R E A L   E I G E N V A L U E S
         MODE    EXTRACTION      EIGENVALUE            RADIANS             CYCLES            GENERALIZED         GENERALIZED
          NO.       ORDER                                                                       MASS              STIFFNESS
              1         1        6.158494E+07        7.847607E+03        1.248985E+03        1.000000E+00        6.158494E+07
        @endcode
        """
        (subcaseName, iSubcase, transient, dt, analysisCode,
         isSort1) = self.readSubcaseNameID()

        headers = self.skip(2)
        data = self.readTable([int, int, float, float, float, float, float])

        if iSubcase in self.eigenvalues:
            self.eigenvalues[iSubcase].addF06Data(data)
        else:
            self.eigenvalues[iSubcase] = RealEigenvalues(iSubcase)
            self.eigenvalues[iSubcase].addF06Data(data)
        self.iSubcases.append(iSubcase)