def add_card(self, card, comment=''): i = self.i self.property_id[i] = integer(card, 1, 'pid') self.material_id[i] = integer(card, 2, 'mid') self.cordm[i] = integer_or_blank(card, 3, 'cordm', 0) self.integ[i] = integer_string_or_blank(card, 4, 'integ', '') #validIntegration = ['THREE', 'TWO', 'FULL', 'BUBBLE', # 2, 3, None, 'REDUCED'] # ISOP # ------ # 1. FULL # 2. # 3. # REDUCED # IN # ------ # 1. # 2. TWO # 3. THREE # BUBBLE - 2 for CTETRA, 3 for CHEXA/CPENTA # STRESS # ------ # 1. GAUSS (no midside nodes on CPENTA/CHEXA; ok on CTETRA) # 2. self.stress[i] = integer_string_or_blank(card, 5, 'stress', '') self.isop[i] = integer_string_or_blank(card, 6, 'isop', '') self.fctn[i] = string_or_blank(card, 7, 'fctn', 'SMECH') assert len(card) <= 8, 'len(PSOLID card) = %i\ncard=%s' % (len(card), card) self.i += 1
def add_card(self, card, comment=''): i = self.i self.property_id[i] = integer(card, 1, 'pid') self.material_id[i] = integer(card, 2, 'mid') self.cordm[i] = integer_or_blank(card, 3, 'cordm', 0) self.integ[i] = integer_string_or_blank(card, 4, 'integ', '') #validIntegration = ['THREE', 'TWO', 'FULL', 'BUBBLE', # 2, 3, None, 'REDUCED'] # ISOP # ------ # 1. FULL # 2. # 3. # REDUCED # IN # ------ # 1. # 2. TWO # 3. THREE # BUBBLE - 2 for CTETRA, 3 for CHEXA/CPENTA # STRESS # ------ # 1. GAUSS (no midside nodes on CPENTA/CHEXA; ok on CTETRA) # 2. self.stress[i] = integer_string_or_blank(card, 5, 'stress', '') self.isop[i] = integer_string_or_blank(card, 6, 'isop', '') self.fctn[i] = string_or_blank(card, 7, 'fctn', 'SMECH') assert len(card) <= 8, 'len(PSOLID card) = %i\ncard=%s' % (len(card), card) self.i += 1
def add_card(cls, card, comment=''): pid = integer(card, 1, 'pid') mid = integer(card, 2, 'mid') cordm = integer_or_blank(card, 3, 'cordm', 0) integ = integer_string_or_blank(card, 4, 'integ') stress = integer_string_or_blank(card, 5, 'stress') isop = integer_string_or_blank(card, 6, 'isop') fctn = string_or_blank(card, 7, 'fctn', 'SMECH') assert len(card) <= 8, 'len(PSOLID card) = %i\ncard=%s' % (len(card), card) return cls(pid, mid, cordm, integ, stress, isop, fctn, comment=comment)
def add_card(cls, card, comment=''): pid = integer(card, 1, 'pid') mid = integer(card, 2, 'mid') cordm = integer_or_blank(card, 3, 'cordm', 0) integ = integer_string_or_blank(card, 4, 'integ') stress = integer_string_or_blank(card, 5, 'stress') isop = integer_string_or_blank(card, 6, 'isop') fctn = string_or_blank(card, 7, 'fctn', 'SMECH') assert len(card) <= 8, 'len(PSOLID card) = %i\ncard=%s' % (len(card), card) return cls(pid, mid, cordm, integ, stress, isop, fctn, comment=comment)
def add_card(cls, card, comment=''): seid_a = integer(card, 1, 'seid_a') seid_b = integer_string_or_blank(card, 2, 'seid_b') nodes = [] i = 1 nfields = len(card) for ifield in range(3, nfields): nid = integer_string_or_blank(card, ifield, 'nid_%i' % i) if nid: i += 1 nodes.append(nid) assert len(card) >= 3, f'len(SEEXCLD card) = {len(card):d}\ncard={card}' return SEEXCLD(seid_a, seid_b, nodes, comment=comment)
def add_card(cls, card, comment=''): seid_a = integer(card, 1, 'seid_a') seid_b = integer_string_or_blank(card, 2, 'seid_b') ids = [] i = 1 nfields = len(card) for ifield in range(3, nfields): idi = integer_string_or_blank(card, ifield, 'ID%i' % i) if idi: i += 1 ids.append(idi) assert len(card) >= 3, f'len(SEBNDRY card) = {len(card):d}\ncard={card}' return SEBNDRY(seid_a, seid_b, ids, comment=comment)
def add_card(cls, card, comment=''): pid = integer_or_blank(card, 2, 'pid') # x / g0 field5 = integer_double_or_blank(card, 5, 'g0_x1', 0.0) if isinstance(field5, integer_types): is_g0 = True g0 = field5 x = [0., 0., 0.] elif isinstance(field5, float): is_g0 = False g0 = None x = np.array([ field5, double_or_blank(card, 6, 'x2', 0.0), double_or_blank(card, 7, 'x3', 0.0) ], dtype='float64') else: raise NotImplementedError('BEAMOR field5 = %r' % field5) offt = integer_string_or_blank(card, 8, 'offt', 'GGG') if isinstance(offt, integer_types): raise NotImplementedError( 'the integer form of offt is not supported; offt=%s' % offt) assert len(card) <= 9, 'len(BEAMOR card) = %i\ncard=%s' % (len(card), card) return BEAMOR(pid, is_g0, g0, x, offt=offt, comment=comment)
def add_card(cls, card, comment=''): """ Adds a CBAR card from ``BDF.add_card(...)`` Parameters ---------- card : BDFCard() a BDFCard object comment : str; default='' a comment for the card """ eid = integer(card, 1, 'eid') pid = integer_or_blank(card, 2, 'pid', eid) ga = integer(card, 3, 'ga') gb = integer(card, 4, 'gb') x, g0 = init_x_g0(card, eid) # doesn't exist in NX nastran offt = integer_string_or_blank(card, 8, 'offt', 'GGG') #print('cls.offt = %r' % (cls.offt)) pa = integer_or_blank(card, 9, 'pa', 0) pb = integer_or_blank(card, 10, 'pb', 0) wa = np.array([double_or_blank(card, 11, 'w1a', 0.0), double_or_blank(card, 12, 'w2a', 0.0), double_or_blank(card, 13, 'w3a', 0.0)], dtype='float64') wb = np.array([double_or_blank(card, 14, 'w1b', 0.0), double_or_blank(card, 15, 'w2b', 0.0), double_or_blank(card, 16, 'w3b', 0.0)], dtype='float64') assert len(card) <= 17, 'len(CBAR card) = %i\ncard=%s' % (len(card), card) return CBAR(eid, pid, [ga, gb], x, g0, offt, pa, pb, wa, wb, comment=comment)
def add_card(self, card, comment=''): i = self.i sid = integer(card, 1, 'sid') excite_id = integer(card, 2, 'excite_id') delay = integer_double_or_blank(card, 3, 'delay', 0.) dphase = integer_double_or_blank(card, 4, 'dphase', 0.) tc = integer_double_or_blank(card, 5, 'tc', 0) td = integer_double_or_blank(card, 6, 'td', 0) Type = integer_string_or_blank(card, 7, 'Type', 'LOAD') if Type in [0, 'L', 'LO', 'LOA', 'LOAD']: Type = 'LOAD' elif Type in [1, 'D', 'DI', 'DIS', 'DISP']: Type = 'DISP' elif Type in [2, 'V', 'VE', 'VEL', 'VELO']: Type = 'VELO' elif Type in [3, 'A', 'AC', 'ACC', 'ACCE']: Type = 'ACCE' elif Type in [5, 6, 7, 12, 13]: pass else: msg = 'invalid TLOAD2 type Type=%r' % Type raise RuntimeError(msg) assert len(card) <= 13, 'len(TLOAD2 card) = %i\ncard=%s' % (len(card), card) self.sid[i] = sid self.excite_id[i] = excite_id if isinstance(delay, int): self.delay_id[i] = delay self.is_delay_table[i] = 1 elif isinstance(delay, float): self.delay_tau[i] = delay self.is_delay_table[i] = 0 else: raise NotImplementedError(delay) if isinstance(dphase, int): self.dphase_id[i] = dphase self.is_dphase_table[i] = 1 elif isinstance(dphase, float): self.dphase_lead[i] = dphase self.is_dphase_table[i] = 0 else: raise NotImplementedError(dphase) self.Type[i] = Type if isinstance(tc, int): self.table_c[i] = tc elif isinstance(tc, float): self.constant_c[i] = tc else: raise NotImplementedError('tc=%r' % tc) if isinstance(td, int): self.table_d[i] = td elif isinstance(td, float): self.constant_d[i] = td else: raise NotImplementedError('tc=%r' % tc) self.i += 1
def add_card(cls, card, comment=''): """ Adds a TLOAD2 card from ``BDF.add_card(...)`` Parameters ---------- card : BDFCard() a BDFCard object comment : str; default='' a comment for the card """ sid = integer(card, 1, 'sid') excite_id = integer(card, 2, 'excite_id') delay = integer_or_blank(card, 3, 'delay', 0) Type = integer_string_or_blank(card, 4, 'Type', 'LOAD') T1 = double_or_blank(card, 5, 'T1', 0.0) T2 = double_or_blank(card, 6, 'T2', T1) frequency = double_or_blank(card, 7, 'frequency', 0.) phase = double_or_blank(card, 8, 'phase', 0.) c = double_or_blank(card, 9, 'c', 0.) b = double_or_blank(card, 10, 'b', 0.) us0 = double_or_blank(card, 11, 'us0', 0.) vs0 = double_or_blank(card, 12, 'vs0', 0.) assert len(card) <= 13, 'len(TLOAD2 card) = %i\ncard=%s' % (len(card), card) return TLOAD2(sid, excite_id, delay, Type, T1, T2, frequency, phase, c, b, us0, vs0, comment=comment)
def add_card(cls, card, comment=''): sid = integer(card, 1, 'sid') excite_id = integer(card, 2, 'excite_id') delay = integer_double_or_blank(card, 3, 'delay', 0) Type = integer_string_or_blank(card, 4, 'Type', 'LOAD') tid = integer(card, 5, 'tid') us0 = double_or_blank(card, 6, 'us0', 0.0) vs0 = double_or_blank(card, 7, 'vs0', 0.0) if Type in [0, 'L', 'LO', 'LOA', 'LOAD']: Type = 'LOAD' elif Type in [1, 'D', 'DI', 'DIS', 'DISP']: Type = 'DISP' elif Type in [2, 'V', 'VE', 'VEL', 'VELO']: Type = 'VELO' elif Type in [3, 'A', 'AC', 'ACC', 'ACCE']: Type = 'ACCE' else: msg = 'invalid TLOAD1 type Type=%r' % Type raise RuntimeError(msg) assert len(card) <= 8, 'len(TLOAD1 card) = %i\ncard=%s' % (len(card), card) return TLOAD1(sid, excite_id, delay, Type, tid, us0, vs0, comment=comment)
def add_card(cls, card, comment=''): sid = integer(card, 1, 'sid') excite_id = integer(card, 2, 'excite_id') delay = integer_double_or_blank(card, 3, 'delay', 0) dphase = integer_double_or_blank(card, 4, 'dphase', 0) tb = integer_or_blank(card, 5, 'tb', 0) tp = integer_or_blank(card, 6, 'tp', 0) Type = integer_string_or_blank(card, 7, 'Type', 'LOAD') if Type in [0, 'L', 'LO', 'LOA', 'LOAD']: Type = 'LOAD' elif Type in [1, 'D', 'DI', 'DIS', 'DISP']: Type = 'DISP' elif Type in [2, 'V', 'VE', 'VEL', 'VELO']: Type = 'VELO' elif Type in [3, 'A', 'AC', 'ACC', 'ACCE']: Type = 'ACCE' else: msg = 'invalid RLOAD2 type Type=%r' % Type raise RuntimeError(msg) assert len(card) <= 8, 'len(RLOAD2 card) = %i\ncard=%s' % (len(card), card) return RLOAD2(sid, excite_id, delay, dphase, tb, tp, Type, comment=comment)
def add_card(cls, card, comment=''): sid = integer(card, 1, 'sid') excite_id = integer(card, 2, 'excite_id') delay = integer_or_blank(card, 3, 'delay', 0) Type = integer_string_or_blank(card, 4, 'Type', 'LOAD') T1 = double_or_blank(card, 5, 'T1', 0.0) T2 = double_or_blank(card, 6, 'T2', T1) frequency = double_or_blank(card, 7, 'frequency', 0.) phase = double_or_blank(card, 8, 'phase', 0.) c = double_or_blank(card, 9, 'c', 0.) b = double_or_blank(card, 10, 'b', 0.) us0 = double_or_blank(card, 11, 'us0', 0.) vs0 = double_or_blank(card, 12, 'vs0', 0.) if Type in [0, 'L', 'LO', 'LOA', 'LOAD']: Type = 'LOAD' elif Type in [1, 'D', 'DI', 'DIS', 'DISP']: Type = 'DISP' elif Type in [2, 'V', 'VE', 'VEL', 'VELO']: Type = 'VELO' elif Type in [3, 'A', 'AC', 'ACC', 'ACCE']: Type = 'ACCE' elif Type in [5, 6, 7, 12, 13]: pass else: msg = 'invalid TLOAD2 type Type=%r' % Type raise RuntimeError(msg) assert len(card) <= 13, 'len(TLOAD2 card) = %i\ncard=%s' % (len(card), card) return TLOAD2(sid, excite_id, delay, Type, T1, T2, frequency, phase, c, b, us0, vs0, comment=comment)
def add_card(self, card, comment=''): """ Adds a PLOAD2 card from ``BDF.add_card(...)`` Parameters ---------- card : BDFCard() a BDFCard object comment : str; default='' a comment for the card """ sid = integer(card, 1, 'sid') pressure = double(card, 2, 'p') if integer_string_or_blank(card, 4, 'THRU') == 'THRU': e1 = integer(card, 3, 'Element1') e2 = integer(card, 5, 'Element1') eids = [i for i in range(e1, e2 + 1)] assert len(card) == 6, 'len(PLOAD2 card) = %i\ncard=%s' % ( len(card), card) else: eids = fields(integer, card, 'eid', i=3, j=len(card)) for eid in eids: self.add(sid, pressure, eid, comment=comment) comment = ''
def add_card(self, card, comment=''): i = self.i sid = integer(card, 1, 'sid') excite_id = integer(card, 2, 'excite_id') delay = integer_double_or_blank(card, 3, 'delay', 0.0) Type = integer_string_or_blank(card, 4, 'Type', 'LOAD') T1 = double_or_blank(card, 5, 'T1', 0.0) T2 = double_or_blank(card, 6, 'T2', T1) frequency = double_or_blank(card, 7, 'frequency', 0.) phase = double_or_blank(card, 8, 'phase', 0.) c = double_or_blank(card, 9, 'c', 0.) b = double_or_blank(card, 10, 'b', 0.) us0 = double_or_blank(card, 11, 'us0', 0.) vs0 = double_or_blank(card, 12, 'vs0', 0.) if Type in [0, 'L', 'LO', 'LOA', 'LOAD']: Type = 'LOAD' elif Type in [1, 'D', 'DI', 'DIS', 'DISP']: Type = 'DISP' elif Type in [2, 'V', 'VE', 'VEL', 'VELO']: Type = 'VELO' elif Type in [3, 'A', 'AC', 'ACC', 'ACCE']: Type = 'ACCE' elif Type in [5, 6, 7, 12, 13]: pass else: msg = 'invalid TLOAD2 type Type=%r' % Type raise RuntimeError(msg) assert len(card) <= 13, 'len(TLOAD2 card) = %i\ncard=%s' % (len(card), card) self.sid[i] = sid self.excite_id[i] = excite_id if isinstance(delay, int): self.delay_id[i] = delay self.is_delay_table[i] = 1 elif isinstance(delay, float): self.delay_tau[i] = delay self.is_delay_table[i] = 0 else: raise NotImplementedError(delay) self.Type[i] = Type self.tau[i, :] = [T1, T2] #self.T1[i] = T1 #self.T2[i] = T2 self.frequency[i] = frequency self.phase[i] = phase self.c[i] = c self.b[i] = b self.us0[i] = us0 self.vs0[i] = vs0 self.i += 1
def add_card(cls, card, comment=''): """ Adds a PSOLID card from ``BDF.add_card(...)`` Parameters ---------- card : BDFCard() a BDFCard object comment : str; default='' a comment for the card """ pid = integer(card, 1, 'pid') mid = integer(card, 2, 'mid') cordm = integer_or_blank(card, 3, 'cordm', 0) integ = integer_string_or_blank(card, 4, 'integ') stress = integer_string_or_blank(card, 5, 'stress') isop = integer_string_or_blank(card, 6, 'isop') fctn = string_or_blank(card, 7, 'fctn', 'SMECH') assert len(card) <= 8, f'len(PSOLID card) = {len(card):d}\ncard={card}' return cls(pid, mid, cordm, integ, stress, isop, fctn, comment=comment)
def add_card(cls, card, comment=''): sid = integer(card, 1, 'sid') excite_id = integer(card, 2, 'excite_id') delay = integer_double_or_blank(card, 3, 'delay', 0) dphase = integer_double_or_blank(card, 4, 'dphase', 0) tc = integer_double_or_blank(card, 5, 'tc', 0) td = integer_double_or_blank(card, 6, 'td', 0) Type = integer_string_or_blank(card, 7, 'Type', 'LOAD') assert len(card) <= 8, 'len(RLOAD1 card) = %i\ncard=%s' % (len(card), card) return RLOAD1(sid, excite_id, delay, dphase, tc, td, Type, comment=comment)
def add_card(self, card, comment=''): i = self.i sid = integer(card, 1, 'sid') excite_id = integer(card, 2, 'excite_id') delay = integer_double_or_blank(card, 3, 'delay', 0.0) Type = integer_string_or_blank(card, 4, 'Type', 'LOAD') T1 = double_or_blank(card, 5, 'T1', 0.0) T2 = double_or_blank(card, 6, 'T2', T1) frequency = double_or_blank(card, 7, 'frequency', 0.) phase = double_or_blank(card, 8, 'phase', 0.) c = double_or_blank(card, 9, 'c', 0.) b = double_or_blank(card, 10, 'b', 0.) us0 = double_or_blank(card, 11, 'us0', 0.) vs0 = double_or_blank(card, 12, 'vs0', 0.) if Type in [0, 'L', 'LO', 'LOA', 'LOAD']: Type = 'LOAD' elif Type in [1, 'D', 'DI', 'DIS', 'DISP']: Type = 'DISP' elif Type in [2, 'V', 'VE', 'VEL', 'VELO']: Type = 'VELO' elif Type in [3, 'A', 'AC', 'ACC', 'ACCE']: Type = 'ACCE' elif Type in [5, 6, 7, 12, 13]: pass else: msg = 'invalid TLOAD2 type Type=%r' % Type raise RuntimeError(msg) assert len(card) <= 13, 'len(TLOAD2 card) = %i\ncard=%s' % (len(card), card) self.sid[i] = sid self.excite_id[i] = excite_id if isinstance(delay, int): self.delay_id[i] = delay self.is_delay_table[i] = 1 elif isinstance(delay, float): self.delay_tau[i] = delay self.is_delay_table[i] = 0 else: raise NotImplementedError(delay) self.Type[i] = Type self.tau[i, :] = [T1, T2] #self.T1[i] = T1 #self.T2[i] = T2 self.frequency[i] = frequency self.phase[i] = phase self.c[i] = c self.b[i] = b self.us0[i] = us0 self.vs0[i] = vs0 self.i += 1
def add_card(cls, card, comment=''): components = fcomponents_or_blank(card, 1, 'components', 0) nfields = len(card) ids = [] i = 1 for ifield in range(2, nfields): idi = integer_string_or_blank(card, ifield, 'ID%i' % i) if idi: i += 1 ids.append(idi) return cls(components, ids, comment=comment)
def add_card(cls, card, comment=''): seid = integer(card, 1, 'seid') nodes = [] i = 1 nfields = len(card) for ifield in range(2, nfields): nid = integer_string_or_blank(card, ifield, 'node_%i' % i) if nid: i += 1 nodes.append(nid) assert len(card) <= 9, f'len(CSUPEXT card) = {len(card):d}\ncard={card}' return CSUPEXT(seid, nodes, comment=comment)
def add_card(cls, card, comment=''): components = fcomponents_or_blank(card, 1, 'components', 0) nfields = len(card) ids = [] i = 1 for ifield in range(2, nfields): idi = integer_string_or_blank(card, ifield, 'ID%i' % i) if idi: i += 1 ids.append(idi) return cls(components, ids, comment=comment)
def add_card(cls, card, comment=''): seid = integer(card, 1, 'seid') eids = [] i = 1 nfields = len(card) for ifield in range(2, nfields): eid = integer_string_or_blank(card, ifield, 'eid_%i' % i) if eid: i += 1 eids.append(eid) assert len(card) <= 9, f'len(SEELT card) = {len(card):d}\ncard={card}' return SEELT(seid, eids, comment=comment)
def add_card(cls, card, comment=''): seid = integer(card, 1, 'seid') superelements = [] i = 1 nfields = len(card) for ifield in range(2, nfields): superelement = integer_string_or_blank(card, ifield, 'ID%i' % i) if superelement: i += 1 superelements.append(superelement) assert len(card) >= 3, f'len(SETREE card) = {len(card):d}\ncard={card}' return SETREE(seid, superelements, comment=comment)
def add_card(self, card, comment=None): i = self.i self._comments.append(comment) #element_ids = {} #for i in range(ncards): #element_ids[i] = [] self.load_id[i] = integer(card, 1, 'load_id') eid = integer(card, 2, 'element_id') self.element_ids[i] = eid p1 = double_or_blank(card, 3, 'p1', 0.0) p = [ p1, double_or_blank(card, 4, 'p2', p1), double_or_blank(card, 5, 'p3', p1), double_or_blank(card, 6, 'p4', p1) ] self.pressures[i, :] = p self.element_ids[i] = [eid] if (integer_string_or_blank(card, 7, 'g1/THRU') == 'THRU' and integer_or_blank(card, 8, 'eid2')): # plates eid2 = integer(card, 8, 'eid2') if eid2: self.element_ids[i] = list( unique( expand_thru([eid, 'THRU', eid2], set_fields=False, sort_fields=False))) #self.g1 = None #self.g34 = None else: #: used for CPENTA, CHEXA self.element_ids[i] = [eid] #: used for solid element only self.g1[i] = integer_or_blank(card, 7, 'g1', -1) #: g3/g4 - different depending on CHEXA/CPENTA or CTETRA self.g34[i] = integer_or_blank(card, 8, 'g34', -1) #: Coordinate system identification number. See Remark 2. #: (Integer >= 0;Default=0) self.cid[i] = integer_or_blank(card, 9, 'cid', 0) self.nvector[i, :] = [ double_or_blank(card, 10, 'N1'), double_or_blank(card, 11, 'N2'), double_or_blank(card, 12, 'N3'), ] self.sorl[i] = string_or_blank(card, 13, 'sorl', 'SURF') self.ldir[i] = string_or_blank(card, 14, 'ldir', 'NORM') assert len(card) <= 15, 'len(PLOAD4 card) = %i\ncard=%s' % (len(card), card) self.i += 1
def add_card(cls, card, comment=''): seid = integer(card, 1, 'seid') psid = integer_or_blank(card, 2, 'psid', 0) nodes = [] i = 1 nfields = len(card) for ifield in range(3, nfields): nid = integer_string_or_blank(card, ifield, 'nid_%i' % i) if nid: i += 1 nodes.append(nid) assert len(card) >= 3, f'len(CSUPER card) = {len(card):d}\ncard={card}' return CSUPER(seid, psid, nodes, comment=comment)
def add_card(cls, card, comment=''): sid = integer(card, 1, 'sid') #: Number (float) nfields = card.nfields i = 2 eid_data = [] while i < nfields: d = integer_string_or_blank(card, i, 'field_%s' % i) if d is not None: eid_data.append(d) i += 1 eids = expand_thru_by(eid_data) return BSURF(sid, eids, comment=comment)
def add_card(cls, card, comment=''): sid = integer(card, 1, 'sid') #: Number (float) nfields = card.nfields i = 2 eid_data = [] while i < nfields: d = integer_string_or_blank(card, i, 'field_%s' % i) if d is not None: eid_data.append(d) i += 1 eids = expand_thru_by(eid_data) return BSURF(sid, eids, comment=comment)
def add_card(cls, card, comment=''): if integer_string_or_blank(card, 2, 'C') == 'ALL': components = '123456' else: components = fcomponents(card, 1, 'components') ids = [] id_count = 1 for ifield in range(2, len(card)): idi = integer_or_string(card, ifield, 'ID%i' % id_count) ids.append(idi) id_count += 1 return CSET1(ids, components, comment=comment)
def add_card(cls, card, comment=''): if integer_string_or_blank(card, 2, 'C') == 'ALL': components = '123456' else: components = fcomponents(card, 1, 'components') ids = [] id_count = 1 for ifield in range(2, len(card)): idi = integer_or_string(card, ifield, 'ID%i' % id_count) ids.append(idi) id_count += 1 return CSET1(ids, components, comment=comment)
def add_card(cls, card, comment=''): seid = integer(card, 1, 'seid') components = fcomponents_or_blank(card, 2, 'components', 0) nfields = len(card) ids = [] i = 1 for ifield in range(3, nfields): idi = integer_string_or_blank(card, ifield, 'ID%i' % i) if idi: i += 1 ids.append(idi) ids = expand_thru(ids) return cls(seid, components, ids, comment=comment)
def add_card(cls, card, comment=''): seid = integer(card, 1, 'seid') components = fcomponents_or_blank(card, 2, 'components', 0) nfields = len(card) ids = [] i = 1 for ifield in range(3, nfields): idi = integer_string_or_blank(card, ifield, 'ID%i' % i) if idi: i += 1 ids.append(idi) ids = expand_thru(ids) return cls(seid, components, ids, comment=comment)
def add_card(self, card, comment=None): #self._comments.append(comment) self._load_id.append(integer(card, 1, 'load_id')) self._p.append(double(card, 2, 'p')) if integer_string_or_blank(card, 4, 'THRU') == 'THRU': e1 = integer(card, 3, 'Element1') e2 = integer(card, 5, 'Element1') eids = [i for i in range(e1, e2 + 1)] else: eids = fields(integer, card, 'eid', i=3, j=len(card)) assert len(card) == 6, 'len(PLOAD2 card) = %i\ncard=%s' % (len(card), card) self.n += len(eids) self._element_ids.append(eids)
def add_card(self, card, comment=None): #self._comments.append(comment) self._load_id.append(integer(card, 1, 'load_id')) self._p.append(double(card, 2, 'p')) if integer_string_or_blank(card, 4, 'THRU') == 'THRU': e1 = integer(card, 3, 'Element1') e2 = integer(card, 5, 'Element1') eids = [i for i in range(e1, e2 + 1)] else: eids = fields(integer, card, 'eid', i=3, j=len(card)) assert len(card) == 6, 'len(PLOAD2 card) = %i\ncard=%s' % (len(card), card) self.n += len(eids) self._element_ids.append(eids)
def add_card(self, card, comment=None): i = self.i self._comments.append(comment) #element_ids = {} #for i in range(ncards): #element_ids[i] = [] self.load_id[i] = integer(card, 1, 'load_id') eid = integer(card, 2, 'element_id') self.element_ids[i] = eid p1 = double_or_blank(card, 3, 'p1', 0.0) p = [p1, double_or_blank(card, 4, 'p2', p1), double_or_blank(card, 5, 'p3', p1), double_or_blank(card, 6, 'p4', p1)] self.pressures[i, :] = p self.element_ids[i] = [eid] if(integer_string_or_blank(card, 7, 'g1/THRU') == 'THRU' and integer_or_blank(card, 8, 'eid2')): # plates eid2 = integer(card, 8, 'eid2') if eid2: self.element_ids[i] = list(unique(expand_thru([eid, 'THRU', eid2], set_fields=False, sort_fields=False))) #self.g1 = None #self.g34 = None else: #: used for CPENTA, CHEXA self.element_ids[i] = [eid] #: used for solid element only self.g1[i] = integer_or_blank(card, 7, 'g1', -1) #: g3/g4 - different depending on CHEXA/CPENTA or CTETRA self.g34[i] = integer_or_blank(card, 8, 'g34', -1) #: Coordinate system identification number. See Remark 2. #: (Integer >= 0;Default=0) self.cid[i] = integer_or_blank(card, 9, 'cid', 0) self.nvector[i, :] = [ double_or_blank(card, 10, 'N1'), double_or_blank(card, 11, 'N2'), double_or_blank(card, 12, 'N3'), ] self.sorl[i] = string_or_blank(card, 13, 'sorl', 'SURF') self.ldir[i] = string_or_blank(card, 14, 'ldir', 'NORM') assert len(card) <= 15, 'len(PLOAD4 card) = %i\ncard=%s' % (len(card), card) self.i += 1
def add_card(cls, card, comment=''): sid = integer(card, 1, 'sid') excite_id = integer(card, 2, 'excite_id') delay = integer_double_or_blank(card, 3, 'delay', 0) dphase = integer_double_or_blank(card, 4, 'dphase', 0) tc = integer_double_or_blank(card, 5, 'tc', 0) td = integer_double_or_blank(card, 6, 'td', 0) Type = integer_string_or_blank(card, 7, 'Type', 'LOAD') assert len(card) <= 8, 'len(RLOAD1 card) = %i\ncard=%s' % (len(card), card) return RLOAD1(sid, excite_id, delay, dphase, tc, td, Type, comment=comment)
def add_card(cls, card, comment=''): sid = integer(card, 1, 'sid') excite_id = integer(card, 2, 'excite_id') delay = integer_or_blank(card, 3, 'delay', 0) Type = integer_string_or_blank(card, 4, 'Type', 'LOAD') T1 = double_or_blank(card, 5, 'T1', 0.0) T2 = double_or_blank(card, 6, 'T2', T1) frequency = double_or_blank(card, 7, 'frequency', 0.) phase = double_or_blank(card, 8, 'phase', 0.) c = double_or_blank(card, 9, 'c', 0.) b = double_or_blank(card, 10, 'b', 0.) us0 = double_or_blank(card, 11, 'us0', 0.) vs0 = double_or_blank(card, 12, 'vs0', 0.) if Type in [0, 'L', 'LO', 'LOA', 'LOAD']: Type = 'LOAD' elif Type in [1, 'D', 'DI', 'DIS', 'DISP']: Type = 'DISP' elif Type in [2, 'V', 'VE', 'VEL', 'VELO']: Type = 'VELO' elif Type in [3, 'A', 'AC', 'ACC', 'ACCE']: Type = 'ACCE' elif Type in [5, 6, 7, 12, 13]: pass else: msg = 'invalid TLOAD2 type Type=%r' % Type raise RuntimeError(msg) assert len(card) <= 13, 'len(TLOAD2 card) = %i\ncard=%s' % (len(card), card) return TLOAD2(sid, excite_id, delay, Type, T1, T2, frequency, phase, c, b, us0, vs0, comment=comment)
def add_card(self, card, comment=''): i = self.i sid = integer(card, 1, 'sid') excite_id = integer(card, 2, 'excite_id') delay = integer_double_or_blank(card, 3, 'delay', 0.0) Type = integer_string_or_blank(card, 4, 'Type', 'LOAD') table_id = integer(card, 5, 'table_id') us0 = double_or_blank(card, 6, 'us0', 0.0) vs0 = double_or_blank(card, 7, 'vs0', 0.0) if Type in [0, 'L', 'LO', 'LOA', 'LOAD']: Type = 'LOAD' elif Type in [1, 'D', 'DI', 'DIS', 'DISP']: Type = 'DISP' elif Type in [2, 'V', 'VE', 'VEL', 'VELO']: Type = 'VELO' elif Type in [3, 'A', 'AC', 'ACC', 'ACCE']: Type = 'ACCE' elif Type in [5, 6, 7, 12, 13]: pass else: msg = 'invalid TLOAD2 type Type=%r' % Type raise RuntimeError(msg) assert len(card) <= 13, 'len(TLOAD2 card) = %i\ncard=%s' % (len(card), card) self.sid[i] = sid self.excite_id[i] = excite_id if isinstance(delay, int): self.delay_id[i] = delay self.is_delay_table[i] = 1 elif isinstance(delay, float): self.delay_tau[i] = delay self.is_delay_table[i] = 0 else: raise NotImplementedError(delay) self.Type[i] = Type self.table_id[i] = table_id self.us0[i] = us0 self.vs0[i] = vs0 self.i += 1
def __init__(self, card=None, data=None, comment=''): if comment: self._comment = comment if card: #: Set identification number. (Unique Integer > 0) self.sid = integer(card, 1, 'sid') #: Number (float) nfields = card.nfields i = 2 eid_data = [] while i < nfields: d = integer_string_or_blank(card, i, 'field_%s' % i) if d is not None: eid_data.append(d) i += 1 #: Element identification numbers of shell elements. (Integer > 0) self.eids = expand_thru_by(eid_data) else: msg = '%s has not implemented data parsing' % self.type raise NotImplementedError(msg)
def __init__(self, card=None, data=None, comment=''): Set.__init__(self, card, data) if comment: self._comment = comment #: Component number. (Integer zero or blank for scalar points or any #: unique combination of the Integers 1 through 6 for grid points with #: no embedded blanks.) self.components = components_or_blank(card, 1, 'components', 0) nfields = len(card) IDs = [] i = 1 for ifield in range(2, nfields): ID = integer_string_or_blank(card, ifield, 'ID%i' % i) if ID: i += 1 IDs.append(ID) #: Identifiers of grids points. (Integer > 0) self.IDs = expand_thru(IDs)
def add_card(cls, card, comment=''): eid = integer(card, 1, 'eid') pid = integer_or_blank(card, 2, 'pid', eid) ga = integer(card, 3, 'ga') gb = integer(card, 4, 'gb') x, g0 = cls._init_x_g0(card, eid) # doesn't exist in NX nastran offt = integer_string_or_blank(card, 8, 'offt', 'GGG') #print('cls.offt = %r' % (cls.offt)) pa = integer_or_blank(card, 9, 'pa', 0) pb = integer_or_blank(card, 10, 'pb', 0) wa = np.array([ double_or_blank(card, 11, 'w1a', 0.0), double_or_blank(card, 12, 'w2a', 0.0), double_or_blank(card, 13, 'w3a', 0.0) ], dtype='float64') wb = np.array([ double_or_blank(card, 14, 'w1b', 0.0), double_or_blank(card, 15, 'w2b', 0.0), double_or_blank(card, 16, 'w3b', 0.0) ], dtype='float64') assert len(card) <= 17, 'len(CBAR card) = %i\ncard=%s' % (len(card), card) return CBAR(eid, pid, ga, gb, x, g0, offt, pa, pb, wa, wb, comment=comment)
def add_card(cls, card, comment=''): """ Adds a RLOAD2 card from ``BDF.add_card(...)`` Parameters ---------- card : BDFCard() a BDFCard object comment : str; default='' a comment for the card """ sid = integer(card, 1, 'sid') excite_id = integer(card, 2, 'excite_id') delay = integer_double_or_blank(card, 3, 'delay', 0) dphase = integer_double_or_blank(card, 4, 'dphase', 0) tb = integer_double_or_blank(card, 5, 'tb', 0) tp = integer_double_or_blank(card, 6, 'tp', 0) Type = integer_string_or_blank(card, 7, 'Type', 'LOAD') assert len(card) <= 8, 'len(RLOAD2 card) = %i\ncard=%s' % (len(card), card) return RLOAD2(sid, excite_id, delay, dphase, tb, tp, Type, comment=comment)
def add_card(cls, card, comment=''): """ Adds a TLOAD1 card from ``BDF.add_card(...)`` Parameters ---------- card : BDFCard() a BDFCard object comment : str; default='' a comment for the card """ sid = integer(card, 1, 'sid') excite_id = integer(card, 2, 'excite_id') delay = integer_double_or_blank(card, 3, 'delay', 0) Type = integer_string_or_blank(card, 4, 'Type', 'LOAD') tid = integer(card, 5, 'tid') us0 = double_or_blank(card, 6, 'us0', 0.0) vs0 = double_or_blank(card, 7, 'vs0', 0.0) assert len(card) <= 8, 'len(TLOAD1 card) = %i\ncard=%s' % (len(card), card) return TLOAD1(sid, excite_id, tid, delay=delay, Type=Type, us0=us0, vs0=vs0, comment=comment)
def add_card(cls, card, comment=''): sid = integer(card, 1, 'sid') excite_id = integer(card, 2, 'excite_id') delay = integer_double_or_blank(card, 3, 'delay', 0) Type = integer_string_or_blank(card, 4, 'Type', 'LOAD') tid = integer(card, 5, 'tid') us0 = double_or_blank(card, 6, 'us0', 0.0) vs0 = double_or_blank(card, 7, 'vs0', 0.0) if Type in [0, 'L', 'LO', 'LOA', 'LOAD']: Type = 'LOAD' elif Type in [1, 'D', 'DI', 'DIS', 'DISP']: Type = 'DISP' elif Type in [2, 'V', 'VE', 'VEL', 'VELO']: Type = 'VELO' elif Type in [3, 'A', 'AC', 'ACC', 'ACCE']: Type = 'ACCE' else: msg = 'invalid TLOAD1 type Type=%r' % Type raise RuntimeError(msg) assert len(card) <= 8, 'len(TLOAD1 card) = %i\ncard=%s' % (len(card), card) return TLOAD1(sid, excite_id, delay, Type, tid, us0, vs0, comment=comment)
def add_card(cls, card, comment=''): sid = integer(card, 1, 'sid') excite_id = integer(card, 2, 'excite_id') delay = integer_double_or_blank(card, 3, 'delay', 0) dphase = integer_double_or_blank(card, 4, 'dphase', 0) tb = integer_or_blank(card, 5, 'tb', 0) tp = integer_or_blank(card, 6, 'tp', 0) Type = integer_string_or_blank(card, 7, 'Type', 'LOAD') if Type in [0, 'L', 'LO', 'LOA', 'LOAD']: Type = 'LOAD' elif Type in [1, 'D', 'DI', 'DIS', 'DISP']: Type = 'DISP' elif Type in [2, 'V', 'VE', 'VEL', 'VELO']: Type = 'VELO' elif Type in [3, 'A', 'AC', 'ACC', 'ACCE']: Type = 'ACCE' else: msg = 'invalid RLOAD2 type Type=%r' % Type raise RuntimeError(msg) assert len(card) <= 8, 'len(RLOAD2 card) = %i\ncard=%s' % (len(card), card) return RLOAD2(sid, excite_id, delay, dphase, tb, tp, Type, comment=comment)
def add_card(cls, card, comment=''): """ Adds a CSET1 card from ``BDF.add_card(...)`` Parameters ---------- card : BDFCard() a BDFCard object comment : str; default='' a comment for the card """ if integer_string_or_blank(card, 2, 'C') == 'ALL': components = '123456' else: components = parse_components(card, 1, 'components') ids = [] id_count = 1 for ifield in range(2, len(card)): idi = integer_or_string(card, ifield, 'ID%i' % id_count) ids.append(idi) id_count += 1 return CSET1(ids, components, comment=comment)
def add_card(cls, card, comment=''): """ Adds a USET1 card from ``BDF.add_card(...)`` Parameters ---------- card : BDFCard() a BDFCard object comment : str; default='' a comment for the card """ name = string(card, 1, 'name') components = fcomponents_or_blank(card, 2, 'components', 0) nfields = len(card) ids = [] i = 1 for ifield in range(3, nfields): idi = integer_string_or_blank(card, ifield, 'ID%i' % i) if idi: i += 1 ids.append(idi) return USET1(name, components, ids, comment=comment)
def add_card(cls, card, comment=''): eid = integer(card, 1, 'eid') pid = integer_or_blank(card, 2, 'pid', eid) ga = integer(card, 3, 'ga') gb = integer(card, 4, 'gb') x, g0 = cls._init_x_g0(card, eid) # doesn't exist in NX nastran offt = integer_string_or_blank(card, 8, 'offt', 'GGG') #print('cls.offt = %r' % (cls.offt)) pa = integer_or_blank(card, 9, 'pa', 0) pb = integer_or_blank(card, 10, 'pb', 0) wa = np.array([double_or_blank(card, 11, 'w1a', 0.0), double_or_blank(card, 12, 'w2a', 0.0), double_or_blank(card, 13, 'w3a', 0.0)], dtype='float64') wb = np.array([double_or_blank(card, 14, 'w1b', 0.0), double_or_blank(card, 15, 'w2b', 0.0), double_or_blank(card, 16, 'w3b', 0.0)], dtype='float64') assert len(card) <= 17, 'len(CBAR card) = %i\ncard=%s' % (len(card), card) return CBAR(eid, pid, ga, gb, x, g0, offt, pa, pb, wa, wb, comment=comment)
def test_integer_string_or_blank(self): # integer self.check_integer(integer_string_or_blank) # float #print type(integer_string_or_blank(BDFCard(['4.0']), 0, 'field')) with self.assertRaises(SyntaxError): integer_string_or_blank(BDFCard([3.0]), 0, 'field') with self.assertRaises(SyntaxError): integer_string_or_blank(BDFCard(['4.0']), 0, 'field') with self.assertRaises(SyntaxError): integer_string_or_blank(BDFCard(['5.']), 0, 'field') # string self.assertEqual('LOAD', integer_string_or_blank(BDFCard(['load']), 0, 'field')) # blank integer_string_or_blank(BDFCard([' ']), 0, 'field') integer_string_or_blank(BDFCard([None]), 0, 'field')
def build(self): cards = self._cards ncards = len(cards) self.n = ncards if ncards: float_fmt = self.model.float self.load_id = zeros(ncards, 'int32') #: Element ID self.element_id = zeros(ncards, 'int32') #: Property ID self.pressures = zeros((ncards, 4), 'int32') element_ids = {} for i in range(ncards): element_ids[i] = [] self.g1 = full(ncards, nan, 'int32') self.g34 = full(ncards, nan, 'int32') self.ldir = full(ncards, nan, '|S4') self.sorl = full(ncards, nan, '|S4') self.cid = zeros(ncards, dtype='int32') self.NVector = zeros((ncards, 3), dtype=float_fmt) for i, card in enumerate(cards): self.load_id[i] = integer(card, 1, 'load_id') eid = integer(card, 2, 'element_id') self.element_id[i] = eid p1 = double_or_blank(card, 3, 'p1', 0.0) p = [p1, double_or_blank(card, 4, 'p2', p1), double_or_blank(card, 5, 'p3', p1), double_or_blank(card, 6, 'p4', p1)] self.pressures[i, :] = p self.element_ids[i] = [eid] if(integer_string_or_blank(card, 7, 'g1/THRU') == 'THRU' and integer_or_blank(card, 8, 'eid2')): # plates eid2 = integer(card, 8, 'eid2') if eid2: self.element_ids[i] = list(unique(expand_thru([self.eid, 'THRU', eid2], set_fields=False, sort_fields=False))) #self.g1 = None #self.g34 = None else: #: used for CPENTA, CHEXA self.element_ids[i] = [self.eid] #: used for solid element only self.g1[i] = integer_or_blank(card, 7, 'g1') #: g3/g4 - different depending on CHEXA/CPENTA or CTETRA self.g34[i] = integer_or_blank(card, 8, 'g34') #: Coordinate system identification number. See Remark 2. #: (Integer >= 0;Default=0) self.cid[i] = integer_or_blank(card, 9, 'cid', 0) self.NVector[i, :] = [ double_or_blank(card, 10, 'N1', 0.0), double_or_blank(card, 11, 'N2', 0.0), double_or_blank(card, 12, 'N3', 0.0), ] self.sorl[i] = string_or_blank(card, 13, 'sorl', 'SURF') self.ldir[i] = string_or_blank(card, 14, 'ldir', 'NORM') assert len(card) <= 15, 'len(PLOAD4 card) = %i\ncard=%s' % (len(card), card) i = self.load_id.argsort() #self.element_id = self.element_id[i] self.pressures = self.pressures[i, :] #self.node_ids = self.node_ids[i, :] #element_ids = {} #for j in range(ncards): #element_ids[j] = element_ids[i[j]] self.g1 = self.g1[i] self.g34 = self.g34[i] self.ldir = self.ldir[i] self.sorl = self.sorl[i] self.cid = self.cid[i] self.NVector = self.NVector[i, :] self.n += len(eids) self.load_cases = {} self.load_ids = unique(self.load_id) else: self.load_id = array([], dtype='int32')