def _read_pcomp(self, data, n): """ PCOMP(2706,27,287) - the marker for Record 22 """ nproperties = 0 s1 = Struct(b(self._endian + '2i3fi2f')) s2 = Struct(b(self._endian + 'i2fi')) ndata = len(data) while n < (ndata - 32): out = s1.unpack(data[n:n + 32]) (pid, nlayers, z0, nsm, sb, ft, Tref, ge) = out if self.binary_debug: self.log.debug( 'PCOMP pid=%s nlayers=%s z0=%s nsm=%s sb=%s ft=%s Tref=%s ge=%s' % tuple(out)) assert isinstance(nlayers, int), out n += 32 mids = [] T = [] thetas = [] souts = [] # None, 'SYM', 'MEM', 'BEND', 'SMEAR', 'SMCORE', 'NO' is_symmetrical = 'NO' if nlayers < 0: is_symmetrical = 'SYM' nlayers = abs(nlayers) assert nlayers > 0, out assert 0 < nlayers < 100, 'pid=%s nlayers=%s z0=%s nms=%s sb=%s ft=%s Tref=%s ge=%s' % ( pid, nlayers, z0, nsm, sb, ft, Tref, ge) if self.is_debug_file: self.binary_debug.write( ' pid=%s nlayers=%s z0=%s nms=%s sb=%s ft=%s Tref=%s ge=%s\n' % (pid, nlayers, z0, nsm, sb, ft, Tref, ge)) for ilayer in range(nlayers): (mid, t, theta, sout) = s2.unpack(data[n:n + 16]) mids.append(mid) T.append(t) thetas.append(theta) souts.append(sout) if self.is_debug_file: self.binary_debug.write( ' mid=%s t=%s theta=%s sout=%s\n' % (mid, t, theta, sout)) n += 16 data_in = [ pid, z0, nsm, sb, ft, Tref, ge, is_symmetrical, mids, T, thetas, souts ] prop = PCOMP.add_op2_data(data_in) self._add_op2_property(prop) nproperties += 1 self.card_count['PCOMP'] = nproperties return n
def _read_pcomp(self, data, n): """ PCOMP(2706,27,287) - the marker for Record 22 """ nproperties = 0 s1 = Struct(b(self._endian + "2i3fi2f")) s2 = Struct(b(self._endian + "i2fi")) ndata = len(data) while n < (ndata - 32): out = s1.unpack(data[n : n + 32]) (pid, nlayers, z0, nsm, sb, ft, Tref, ge) = out if self.binary_debug: self.log.debug("PCOMP pid=%s nlayers=%s z0=%s nsm=%s sb=%s ft=%s Tref=%s ge=%s" % tuple(out)) assert isinstance(nlayers, int), out n += 32 mids = [] T = [] thetas = [] souts = [] # None, 'SYM', 'MEM', 'BEND', 'SMEAR', 'SMCORE', 'NO' is_symmetrical = "NO" if nlayers < 0: is_symmetrical = "SYM" nlayers = abs(nlayers) assert nlayers > 0, out assert 0 < nlayers < 100, "pid=%s nlayers=%s z0=%s nms=%s sb=%s ft=%s Tref=%s ge=%s" % ( pid, nlayers, z0, nsm, sb, ft, Tref, ge, ) for ilayer in range(nlayers): (mid, t, theta, sout) = s2.unpack(data[n : n + 16]) mids.append(mid) T.append(t) thetas.append(theta) souts.append(sout) if self.is_debug_file: self.binary_debug.write(" mid=%s t=%s theta=%s sout=%s" % (mid, t, theta, sout)) n += 16 data_in = [pid, z0, nsm, sb, ft, Tref, ge, is_symmetrical, mids, T, thetas, souts] prop = PCOMP.add_op2_data(data_in) self._add_op2_property(prop) nproperties += 1 self.card_count["PCOMP"] = nproperties return n
def _read_pcomp(self, data, n): """ PCOMP(2706,27,287) - the marker for Record 22 """ nproperties = 0 s1 = Struct(b(self._endian + '2i3fi2f')) s2 = Struct(b(self._endian + 'i2fi')) ndata = len(data) while n < (ndata - 32): out = s1.unpack(data[n:n+32]) (pid, nlayers, z0, nsm, sb, ft, Tref, ge) = out if self.binary_debug: self.log.debug('PCOMP pid=%s nlayers=%s z0=%s nsm=%s sb=%s ft=%s Tref=%s ge=%s' % tuple(out)) assert isinstance(nlayers, int), out n += 32 Mid = [] T = [] Theta = [] Sout = [] # None, 'SYM', 'MEM', 'BEND', 'SMEAR', 'SMCORE', 'NO' is_symmetrical = 'NO' if nlayers < 0: is_symmetrical = 'SYM' nlayers = abs(nlayers) assert nlayers > 0, out assert 0 < nlayers < 100, 'pid=%s nlayers=%s z0=%s nms=%s sb=%s ft=%s Tref=%s ge=%s' % ( pid, nlayers, z0, nsm, sb, ft, Tref, ge) for ilayer in range(nlayers): (mid, t, theta, sout) = s2.unpack(data[n:n+16]) Mid.append(mid) T.append(t) Theta.append(theta) Sout.append(sout) if self.is_debug_file: self.binary_debug.write(' mid=%s t=%s theta=%s sout=%s' % (mid, t, theta, sout)) n += 16 data_in = [ pid, z0, nsm, sb, ft, Tref, ge, is_symmetrical, Mid, T, Theta, Sout] prop = PCOMP.add_op2_data(data_in) self._add_op2_property(prop) nproperties += 1 self.card_count['PCOMP'] = nproperties return n
def add_pcomp(self, card, comment): card = PCOMP(card, comment=comment) self.pcomp[card.property_id] = card
def to_pcomp(self): return PCOMP(self.pid, self.mids, self.thicknesses, self.thetas)