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)
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)
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
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
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
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)
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
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