Source code for pyNastran.op2.tables.lama_eigenvalues.lama

from six.moves import range
from struct import Struct

from pyNastran.op2.op2_common import OP2Common
from pyNastran.op2.tables.lama_eigenvalues.lama_objects import (
    RealEigenvalues, ComplexEigenvalues, BucklingEigenvalues)


[docs]class LAMA(OP2Common): def __init__(self): OP2Common.__init__(self) def _read_complex_eigenvalue_3(self, data): raise NotImplementedError(self.table_name) def _read_buckling_eigenvalue_3(self, data): #print self.show_data(data) #self._read_title_helper(data) self.words = ['aCode', 'tCode', '???', 'isubcase', '???', '???', '???', '???', '???', '???', '???', '???', '???', '???', '???', '???', '???', '???', '???', '???', '???', '???', '???', '???', '???', '???', '???', '???'] #self.show_data(data) (three) = self.parse_approach_code(data) self.seven = self.add_data_parameter(data, 'seven', 'i', 10, False) # seven ## residual vector augmentation flag self.resFlag = self.add_data_parameter(data, 'resFlag', 'i', 11, False) ## fluid modes Flag self.fldFlag = self.add_data_parameter(data, 'fldFlag', 'i', 12, False) #print(self.data_code) #self.add_data_parameter(data,'format_code', 'i',9,False) ## format code #self.add_data_parameter(data,'num_wide', 'i',10,False) ## number of words per entry in record; .. note:: is this needed for this table ??? #if self.analysis_code==2: # sort2 # self.lsdvmn = self.get_values(data,'i',5) #print("*isubcase=%s"%(self.isubcase)() #print("analysis_code=%s table_code=%s thermal=%s" %(self.analysis_code self.table_code, self.thermal)) #self.print_block(data) self._read_title(data) #assert self.isubcase != 0, self.isubcase #print(self.Title) #raise NotImplementedError(self.table_name) def _read_complex_eigenvalue_4(self, data): if self.read_mode == 1: return len(data) raise NotImplementedError(self.table_name) def _read_buckling_eigenvalue_4(self, data): # BLAMA - Buckling eigenvalue summary table # CLAMA - Complex eigenvalue summary table # LAMA - Normal modes eigenvalue summary table if self.read_mode == 1: return len(data) msg = '_read_buckling_eigenvalue_4' #return self._not_implemented_or_skip(data, msg) # TODO: implement buckling eigenvalues ntotal = 4 * 7 nModes = len(data) // ntotal n = 0 #assert self.isubcase != 0, self.isubcase blama = BucklingEigenvalues(11) self.eigenvalues[self.Title] = blama #self.eigenvalues[self.isubcase] = lama s = Struct(b'ii5f') for i in range(nModes): edata = data[n:n+ntotal] 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 # BLAMA?? #(modeNum, extractOrder, eigenvalue, radian, cycle, genM, genK) = line # LAMA #(rootNum, extractOrder, eigr, eigi, cycle, damping) = data # CLAMA blama.addF06Line(out) n += ntotal return n def _read_real_eigenvalue_3(self, data): self.words = ['aCode', 'tCode', '???', 'isubcase', '???', '???', '???', '???', '???', '???', '???', '???', '???', '???', '???', '???', '???', '???', '???', '???', '???', '???', '???', '???', '???', '???', '???', '???'] #self.show_data(data) (three) = self.parse_approach_code(data) self.seven = self.add_data_parameter(data, 'seven', 'i', 10, False) # seven ## residual vector augmentation flag self.resFlag = self.add_data_parameter(data, 'resFlag', 'i', 11, False) ## fluid modes Flag self.fldFlag = self.add_data_parameter(data, 'fldFlag', 'i', 12, False) self.Title = None #print(self.data_code) #self.add_data_parameter(data,'format_code', 'i',9,False) ## format code #self.add_data_parameter(data,'num_wide', 'i',10,False) ## number of words per entry in record; .. note:: is this needed for this table ??? #if self.analysis_code == 2: # sort2 #self.lsdvmn = self.get_values(data,'i',5) #print("*isubcase=%s" % self.isubcase) #print("analysis_code=%s table_code=%s thermal=%s" % (self.analysis_code, self.table_code, self.thermal)) #self.print_block(data) self._read_title(data) 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 lama.addF06Line(out) n += ntotal return n