def __init__(self, card=None, data=None, comment=''): LineProperty.__init__(self, card, data) if comment: self._comment = comment if card: #: Property ID self.pid = integer(card, 1, 'pid') #: Material ID self.mid = integer(card, 2, 'mid') self.group = string_or_blank(card, 3, 'group', 'MSCBMLO') #: Section Type (e.g. 'ROD', 'TUBE', 'I', 'H') self.Type = string(card, 4, 'Type') ndim = self.validTypes[self.Type] j = 9 + ndim + 1 #: dimension list self.dim = fields(double_or_blank, card, 'dim', i=9, j=j) #: non-structural mass self.nsm = double_or_blank(card, 9 + ndim + 1, 'nsm', 0.0) if ndim > 0: self.nsm = set_default_if_blank(self.dim.pop(), 0.0) else: self.nsm = 0.0 assert isinstance(self.nsm, float), 'nsm=%r' % self.nsm else: self.pid = data[0] self.mid = data[1] self.group = data[2].strip() self.Type = data[3].strip() self.dim = list(data[4:-1]) self.nsm = data[-1] #print("group = %r" % self.group) #print("Type = %r" % self.Type) #print("dim = ",self.dim) #print(str(self)) #print("*PBARL = ",data) #raise NotImplementedError('not finished...') if self.Type not in self.validTypes: msg = ('Invalid PBARL Type, Type=%s ' 'validTypes=%s' % (self.Type, self.validTypes.keys())) raise RuntimeError(msg) if len(self.dim) != self.validTypes[self.Type]: msg = 'dim=%s len(dim)=%s Type=%s len(dimType)=%s' % ( self.dim, len(self.dim), self.Type, self.validTypes[self.Type]) raise RuntimeError(msg) assert None not in self.dim
def add(self, card, comment): i = self.i self.property_id[i] = integer(card, 1, 'property_id') self.material_id[i] = integer(card, 2, 'material_id') self.group[i] = string_or_blank(card, 3, 'group', 'MSCBMLO') Type = string(card, 4, 'Type') self.Type[i] = Type ndim = self.valid_types[Type] j = 9 + ndim + 1 dim = fields(double_or_blank, card, 'dim', i=9, j=j) nsm = double_or_blank(card, 9 + ndim + 1, 'nsm', 0.0) if ndim > 0: nsm = set_default_if_blank(dim.pop(), 0.0) #else: #nsm = 0.0 self.dim[i] = dim self.nsm[i] = nsm assert isinstance(nsm, float), 'nsm=%r' % nsm if Type not in self.valid_types: msg = ('Invalid PBARL Type, Type=%s ' 'validTypes=%s' % (Type, self.valid_types.keys())) raise RuntimeError(msg) if len(dim) != self.valid_types[Type]: msg = 'dim=%s len(dim)=%s Type=%s len(dimType)=%s' % ( dim, len(dim), Type, self.valid_types[Type]) raise RuntimeError(msg) assert None not in dim self.i += 1
def test_field_defaults(self): self.assertEqual(set_blank_if_default(0.0, 0.0), None, set_blank_if_default(0.0, 0.0)) self.assertEqual(set_blank_if_default(1.0, 0.0), 1.0, set_blank_if_default(1.0, 0.0)) # None self.assertEqual(set_default_if_blank(None, None), None, set_default_if_blank(None, None)) # floats self.assertEqual(set_default_if_blank(4.0, None), 4.0, set_default_if_blank(4.0, None)) self.assertEqual(set_default_if_blank(None, 4.0), 4.0, set_default_if_blank(None, 4.0)) # ints self.assertEqual(set_default_if_blank(4, None), 4, set_default_if_blank(4, None)) self.assertEqual(set_default_if_blank(None, 4), 4, set_default_if_blank(None, 4)) # strings self.assertEqual(set_default_if_blank('dummy', 'GGG'), 'dummy', set_default_if_blank('dummy', 'GGG')) self.assertEqual(set_default_if_blank(None, 'GGG'), 'GGG', set_default_if_blank(None, 'GGG'))
def reprFields(self): theta = set_default_if_blank(self.theta, 0.0) list_fields = ['CTRIAX6', self.eid, self.Mid() ] + self.nodeIDs() + [theta] return list_fields
def reprFields(self): th = set_default_if_blank(self.th, 0.0) fields = ['CTRIAX6', self.eid, self.Mid()] + self.nodeIDs() + [th] return fields
def reprFields(self): theta = set_default_if_blank(self.theta, 0.0) list_fields = ['CTRIAX6', self.eid, self.Mid()] + self.nodeIDs() + [theta] return list_fields