def add_card(cls, card, comment=''): """ Adds a SPCD card from ``BDF.add_card(...)`` Parameters ---------- card : BDFCard() a BDFCard object comment : str; default='' a comment for the card """ sid = integer(card, 1, 'sid') if card.field(5) in [None, '']: nodes = [ integer(card, 2, 'G1'), ] constraints = [components_or_blank(card, 3, 'C1', 0)] enforced = [double_or_blank(card, 4, 'D1', 0.0)] else: nodes = [ integer(card, 2, 'G1'), integer(card, 5, 'G2'), ] # :0 if scalar point 1-6 if grid constraints = [ components_or_blank(card, 3, 'C1', 0), components_or_blank(card, 6, 'C2', 0) ] enforced = [ double_or_blank(card, 4, 'D1', 0.0), double_or_blank(card, 7, 'D2', 0.0) ] return SPCD(sid, nodes, constraints, enforced, comment=comment)
def add_card(cls, card, comment=''): conid = integer(card, 1, 'conid') gids = [] constraints = [] enforced = [] fields = card.fields(0) nfields = len(fields) i = 1 for ifield in range(2, nfields, 8): grid = integer(card, ifield, 'G%i' % i) component = components_or_blank(card, ifield + 1, 'constraint%i' % i, 0) # scalar point if i == 1: enforcedi = double(card, ifield + 2, 'enforced%i' % i) if enforcedi == 0.0: raise RuntimeError('enforced1 must be nonzero; enforcedi=%r' % enforcedi) else: enforcedi = double_or_blank(card, ifield + 2, 'enforced%i' % i, 0.0) gids.append(grid) constraints.append(component) enforced.append(enforcedi) i += 1 if ifield + 4 > nfields and i != 2: # if G2 is empty (it's ifield+4 because nfields is length based and not loop friendly) break grid = integer(card, ifield + 3, 'G%i' % i) component = components_or_blank(card, ifield + 4, 'constraint%i' % i, 0) # scalar point enforcedi = double_or_blank(card, ifield + 5, 'enforced%i' % i) gids.append(grid) constraints.append(component) enforced.append(enforcedi) i += 1 return MPC(conid, gids, constraints, enforced, comment=comment)
def add_card(cls, card, comment=''): sid = integer(card, 1, 'sid') nid0 = integer(card, 2, 'nid0') # component 0 means an SPOINT/EPOINT c = components_or_blank(card, 3, 'components_0', 0) b0 = double_or_blank(card, 4, 'b0', 0.) b1 = double_or_blank(card, 5, 'b1', 0.) b2 = double_or_blank(card, 6, 'b2', 0.) nfields = len(card) - 9 nrows = nfields // 8 if nfields % 8 > 0: nrows += 1 nids = [] components = [] a = [] for irow in range(nrows): j = irow * 8 + 9 #ifield = irow + 1 nid = integer(card, j, 'grid_%i' % (irow + 1)) component = components_or_blank(card, j + 1, 'components_%i' % (irow + 1), 0) a0 = double_or_blank(card, j + 2, 'a0_%i' % (irow + 1), 0.) a1 = double_or_blank(card, j + 3, 'a1_%i' % (irow + 1), 0.) a2 = double_or_blank(card, j + 4, 'a2_%i' % (irow + 1), 0.) nids.append(nid) components.append(component) a.append([a0, a1, a2]) return TF(sid, nid0, c, b0, b1, b2, nids, components, a, comment=comment)
def add_card(cls, card, comment=''): eid = integer(card, 1, 'eid') ga = integer(card, 2, 'ga') gb = integer(card, 3, 'gb') cma = components_or_blank(card, 4, 'cma') cmb = components_or_blank(card, 5, 'cmb') alpha = double_or_blank(card, 6, 'alpha', 0.0) assert len(card) <= 7, 'len(RROD card) = %i\ncard=%s' % (len(card), card) return RROD(eid, ga, gb, cma, cmb, alpha, comment=comment)
def add_card(cls, card, comment=''): eid = integer(card, 1, 'eid') ga = integer(card, 2, 'ga') gb = integer(card, 3, 'gb') cma = components_or_blank(card, 4, 'cma') cmb = components_or_blank(card, 5, 'cmb') alpha = double_or_blank(card, 6, 'alpha', 0.0) assert len(card) <= 7, 'len(RROD card) = %i\ncard=%s' % (len(card), card) return RROD(eid, ga, gb, cma, cmb, alpha, comment=comment)
def add_card(cls, card, comment=''): """ Adds an MPC card from ``BDF.add_card(...)`` Parameters ---------- card : BDFCard() a BDFCard object comment : str; default='' a comment for the card """ conid = integer(card, 1, 'conid') nodes = [] components = [] coefficients = [] fields = card.fields(0) nfields = len(fields) i = 1 for ifield in range(2, nfields, 8): nid = integer(card, ifield, 'G%i' % i) component = components_or_blank(card, ifield + 1, 'constraint%i' % i, 0) # scalar point if i == 1: coefficient = double(card, ifield + 2, 'coefficient%i' % i) if coefficient == 0.0: raise RuntimeError( 'coefficient1 must be nonzero; coefficient=%r' % coefficient) else: coefficient = double_or_blank(card, ifield + 2, 'coefficient%i' % i, 0.0) nodes.append(nid) components.append(component) coefficients.append(coefficient) i += 1 if ifield + 4 > nfields and i != 2: # if G2 is empty (it's ifield+4 because nfields is length based # and not loop friendly) break nid = integer(card, ifield + 3, 'G%i' % i) component = components_or_blank(card, ifield + 4, 'constraint%i' % i, 0) # scalar point coefficient = double_or_blank(card, ifield + 5, 'coefficient%i' % i) nodes.append(nid) components.append(component) coefficients.append(coefficient) i += 1 return MPC(conid, nodes, components, coefficients, comment=comment)
def add_card(cls, card, comment=''): eid = integer(card, 1, 'eid') ga = integer(card, 2, 'ga') gb = integer(card, 3, 'gb') cna = components_or_blank(card, 4, 'cna') cnb = components_or_blank(card, 5, 'cnb') cma = components_or_blank(card, 6, 'cma') cmb = components_or_blank(card, 7, 'cmb') alpha = double_or_blank(card, 8, 'alpha', 0.0) assert len(card) <= 9, 'len(RBAR card) = %i' % len(card) return RBAR(eid, ga, gb, cna, cnb, cma, cmb, alpha, comment=comment)
def add_card(cls, card, comment=''): eid = integer(card, 1, 'eid') ium = card.index('UM') if ium > 0: assert string(card, ium, 'UM') == 'UM' #assert isinstance(card[-1], string_types), 'card[-1]=%r type=%s' %(card[-1], type(card[-1])) alpha_last = integer_double_or_string(card, -1, 'alpha_last') if isinstance(alpha_last, float): alpha = alpha_last card.pop( ) # remove the last field so len(card) will not include alpha else: alpha = 0. # loop till UM, no field9,field10 n = 1 i = 0 offset = 2 Gni = [] Cni = [] Gmi = [] Cmi = [] while offset + i < ium - 1: #print('field(%s) = %s' % (offset + i, card.field(offset + i))) gni = integer_or_blank(card, offset + i, 'gn%i' % n) cni = components_or_blank(card, offset + i + 1, 'cn%i' % n) if gni: #print("gni=%s cni=%s" % (gni ,cni)) Gni.append(gni) Cni.append(cni) n += 1 else: assert cni is None i += 2 # loop till alpha, no field9,field10 n = 1 offset = ium + 1 i = 0 # dont grab alpha while offset + i < len(card): gmi = integer_or_blank(card, offset + i, 'gm%i' % n) cmi = components_or_blank(card, offset + i + 1, 'cm%i' % n) if gmi: Gmi.append(gmi) Cmi.append(cmi) n += 1 else: assert cmi is None i += 2 return RBE1(eid, Gni, Cni, Gmi, Cmi, alpha=alpha, comment=comment)
def add_card(cls, card, comment=''): eid = integer(card, 1, 'eid') ium = card.index('UM') if ium > 0: assert string(card, ium, 'UM') == 'UM' #assert isinstance(card[-1], string_types), 'card[-1]=%r type=%s' %(card[-1], type(card[-1])) alpha_last = integer_double_or_string(card, -1, 'alpha_last') if isinstance(alpha_last, float): alpha = alpha_last card.pop() # remove the last field so len(card) will not include alpha else: alpha = 0. # loop till UM, no field9,field10 n = 1 i = 0 offset = 2 Gni = [] Cni = [] Gmi = [] Cmi = [] while offset + i < ium - 1: #print('field(%s) = %s' % (offset + i, card.field(offset + i))) gni = integer_or_blank(card, offset + i, 'gn%i' % n) cni = components_or_blank(card, offset + i + 1, 'cn%i' % n) if gni: #print("gni=%s cni=%s" % (gni ,cni)) Gni.append(gni) Cni.append(cni) n += 1 else: assert cni is None i += 2 # loop till alpha, no field9,field10 n = 1 offset = ium + 1 i = 0 # dont grab alpha while offset + i < len(card): gmi = integer_or_blank(card, offset + i, 'gm%i' % n) cmi = components_or_blank(card, offset + i + 1, 'cm%i' % n) if gmi: Gmi.append(gmi) Cmi.append(cmi) n += 1 else: assert cmi is None i += 2 return RBE1(eid, Gni, Cni, Gmi, Cmi, alpha=alpha, comment=comment)
def add_card(cls, card, comment=''): """ Adds a TF card from ``BDF.add_card(...)`` Parameters ---------- card : BDFCard() a BDFCard object comment : str; default='' a comment for the card """ sid = integer(card, 1, 'sid') nid0 = integer(card, 2, 'nid0') # component 0 means an SPOINT/EPOINT c = components_or_blank(card, 3, 'components_0', 0) b0 = double_or_blank(card, 4, 'b0', 0.) b1 = double_or_blank(card, 5, 'b1', 0.) b2 = double_or_blank(card, 6, 'b2', 0.) nfields = len(card) - 9 nrows = nfields // 8 if nfields % 8 > 0: nrows += 1 nids = [] components = [] a = [] for irow in range(nrows): j = irow * 8 + 9 #ifield = irow + 1 nid = integer(card, j, 'grid_%i' % (irow + 1)) component = components_or_blank(card, j + 1, 'components_%i' % (irow + 1), 0) a0 = double_or_blank(card, j + 2, 'a0_%i' % (irow + 1), 0.) a1 = double_or_blank(card, j + 3, 'a1_%i' % (irow + 1), 0.) a2 = double_or_blank(card, j + 4, 'a2_%i' % (irow + 1), 0.) nids.append(nid) components.append(component) a.append([a0, a1, a2]) return TF(sid, nid0, c, b0, b1, b2, nids, components, a, comment=comment)
def get_spc_constraint(card, i): if i == 0: constraint_id = integer(card, 1, 'sid') node_id = integer(card, 2, 'G1') dofs = components_or_blank(card, 3, 'C1', 0) enforced_motion = double_or_blank(card, 4, 'D1', 0.0) elif i == 1: constraint_id = integer(card, 1, 'sid') node_id = integer_or_blank(card, 5, 'G2') dofs = components_or_blank(card, 6, 'C2', 0) enforced_motion = double_or_blank(card, 7, 'D2', 0.0) else: raise RuntimeError('i =', i) return constraint_id, node_id, dofs, enforced_motion
def add(self, card, comment=''): #self.model.log.debug('RBE2.add') i = self.i #if comment: #self._comment = comment eid = integer(card, 1, 'element_id') gn = integer(card, 2, 'gn') cm = components_or_blank(card, 3, 'cm') #assert gn is not None, 'gn=%s' % self.gn #assert cm is not None, 'cm=%s' % self.cm self.element_id[i] = eid self.gn[i] = gn self.cm[i] = cm alpha = integer_or_double(card, len(card) - 1, 'alpha') if isinstance(alpha, float): # the last field is not part of Gmi self.alpha[i] = alpha n = 1 else: # the last field is part of Gmi n = 0 #self.alpha[i] = 0.0 # we don't need to set alpha j = 4 gmis = [] for k in range(len(card) - 4 - n): gmi = integer(card, j + k, 'Gm%i' % (k + 1)) #print('GM%i = %s' % (k + 1, gmi)) gmis.append(gmi) self.gmi[i] = gmis self.i += 1
def add_card(cls, card, comment=''): sid = integer(card, 1, 'sid') method = string_or_blank(card, 2, 'method') L1 = double(card, 3, 'L1') L2 = double(card, 4, 'L2') nep = integer_or_blank(card, 5, 'nep', 0) ndp = integer_or_blank(card, 6, 'ndp', 3 * nep) ndn = integer_or_blank(card, 7, 'ndn', 3 * nep) norm = string_or_blank(card, 9, 'norm', 'MAX') if norm == 'POINT': G = integer(card, 10, 'G') C = components(card, 11, 'C') else: G = integer_or_blank(card, 10, 'G') C = components_or_blank(card, 11, 'C') assert len(card) <= 12, 'len(EIGB card) = %i\ncard=%s' % (len(card), card) return EIGB(sid, method, L1, L2, nep, ndp, ndn, norm, G, C, comment=comment)
def add_card(cls, card, icard=0, comment=''): noffset = 3 * icard sid = integer(card, 1, 'sid') p = integer(card, 2 + noffset, 'p') c = components_or_blank(card, 3 + noffset, 'c', 0) scale = double(card, 4 + noffset, 'scale') return DAREA(sid, p, c, scale, comment=comment)
def add_card(cls, card, icard=0, comment=''): noffset = 3 * icard sid = integer(card, 1, 'sid') nid = integer(card, 2 + noffset, 'p') component = int(components_or_blank(card, 3 + noffset, 'c', 0)) scale = double(card, 4 + noffset, 'scale') return DAREA(sid, nid, component, scale, comment=comment)
def add_card(cls, card, comment=''): """ Adds a SUPORT1 card from ``BDF.add_card(...)`` Parameters ---------- card : BDFCard() a BDFCard object comment : str; default='' a comment for the card """ conid = integer(card, 1, 'conid') # really a support id sid nfields = len(card) assert len(card) > 2 nterms = int((nfields - 1.) / 2.) n = 1 nodes = [] Cs = [] for i in range(nterms): nstart = 2 + 2 * i nid = integer(card, nstart, 'ID%s' % n) C = components_or_blank(card, nstart + 1, 'component%s' % n, '0') nodes.append(nid) Cs.append(C) n += 1 return SUPORT1(conid, nodes, Cs, comment=comment)
def add_card(cls, card, comment=''): """ Adds a RSPLINE card from ``BDF.add_card(...)`` Parameters ---------- card : BDFCard() a BDFCard object comment : str; default='' a comment for the card """ eid = integer(card, 1, 'eid') diameter_ratio = double_or_blank(card, 2, 'diameter_ratio', 0.1) nfields = len(card) assert nfields % 2 == 1, 'nfields=%s card=%s' % (nfields, card) dependent_nids = [] dependent_components = [] independent_nid = integer(card, 3, 'nid_1') j = 2 for i in range(4, nfields, 2): nid = integer(card, i, 'nid_%s' % j) comp = components_or_blank(card, i + 1, 'components_%i' % j) dependent_nids.append(nid) dependent_components.append(comp) j += 1 return RSPLINE(eid, independent_nid, dependent_nids, dependent_components, diameter_ratio=diameter_ratio, comment=comment)
def add_card(cls, card, comment=''): """ Adds a RBE2 card from ``BDF.add_card(...)`` Parameters ---------- card : BDFCard() a BDFCard object comment : str; default='' a comment for the card """ eid = integer(card, 1, 'eid') gn = integer(card, 2, 'gn') cm = components_or_blank(card, 3, 'cm') alpha = integer_or_double(card, len(card) - 1, 'alpha') if isinstance(alpha, float): # alpha is correct # the last field is not part of Gmi n = 1 else: # the last field is part of Gmi n = 0 alpha = 0.0 j = 4 Gmi = [] for i in range(len(card) - 4 - n): gmi = integer(card, j + i, 'Gm%i' % (i + 1)) Gmi.append(gmi) return RBE2(eid, gn, cm, Gmi, alpha, comment=comment)
def get_spc_constraint(card, i): """parses an SPC/SPCD card""" if i == 0: constraint_id = integer(card, 1, 'sid') node_id = integer(card, 2, 'G1') dofs = components_or_blank(card, 3, 'C1', 0) enforced_motion = double_or_blank(card, 4, 'D1', 0.0) elif i == 1: constraint_id = integer(card, 1, 'sid') node_id = integer_or_blank(card, 5, 'G2') dofs = components_or_blank(card, 6, 'C2', 0) enforced_motion = double_or_blank(card, 7, 'D2', 0.0) else: raise RuntimeError('i =', i) return constraint_id, node_id, dofs, enforced_motion
def add_card(cls, card, comment=''): """ Adds an EIGB card from ``BDF.add_card(...)`` Parameters ---------- card : BDFCard() a BDFCard object comment : str; default='' a comment for the card """ sid = integer(card, 1, 'sid') method = string_or_blank(card, 2, 'method') L1 = double(card, 3, 'L1') L2 = double(card, 4, 'L2') nep = integer_or_blank(card, 5, 'nep', 0) ndp = integer_or_blank(card, 6, 'ndp', 3 * nep) ndn = integer_or_blank(card, 7, 'ndn', 3 * nep) norm = string_or_blank(card, 9, 'norm', 'MAX') if norm == 'POINT': G = integer(card, 10, 'G') C = parse_components(card, 11, 'C') else: G = integer_or_blank(card, 10, 'G') C = components_or_blank(card, 11, 'C') assert len(card) <= 12, 'len(EIGB card) = %i\ncard=%s' % (len(card), card) return EIGB(sid, method, L1, L2, nep, ndp, ndn, norm, G, C, comment=comment)
def add_card(cls, card, comment=''): """ Adds a SUPORT card from ``BDF.add_card(...)`` Parameters ---------- card : BDFCard() a BDFCard object comment : str; default='' a comment for the card """ # TODO: remove fields... #fields = card.fields(1) nfields = len(card) assert len(card) > 1, card nterms = int(nfields / 2.) n = 1 nodes = [] Cs = [] for i in range(nterms): nstart = 1 + 2 * i nid = integer(card, nstart, 'ID%s' % n) C = components_or_blank(card, nstart + 1, 'component%s' % n, '0') nodes.append(nid) Cs.append(C) n += 1 return SUPORT(nodes, Cs, comment=comment)
def add_card(self, card, comment=''): #self.model.log.debug('RBE2.add') i = self.i #if comment: # self.comment = comment eid = integer(card, 1, 'element_id') gn = integer(card, 2, 'gn') cm = components_or_blank(card, 3, 'cm') #assert gn is not None, 'gn=%s' % self.gn #assert cm is not None, 'cm=%s' % self.cm self.element_id[i] = eid self.gn[i] = gn self.cm[i] = cm alpha = integer_or_double(card, len(card) - 1, 'alpha') if isinstance(alpha, float): # the last field is not part of Gmi self.alpha[i] = alpha n = 1 else: # the last field is part of Gmi n = 0 #self.alpha[i] = 0.0 # we don't need to set alpha j = 4 gmis = [] for k in range(len(card) - 4 - n): gmi = integer(card, j + k, 'Gm%i' % (k + 1)) #print('GM%i = %s' % (k + 1, gmi)) gmis.append(gmi) self.gmi[i] = gmis self.i += 1
def parse(self, card, icard=0, comment=''): noffset = 3 * icard sid = integer(card, 1, 'sid') node = integer(card, 2 + noffset, 'node_p') component = int(components_or_blank(card, 3 + noffset, 'c', 0)) scale = double(card, 4 + noffset, 'scale') data = (sid, node, component, scale) return data, comment
def add_card(cls, card, comment=''): sid = integer(card, 1, 'sid') if card.field(5) in [None, '']: gids = [integer(card, 2, 'G1'),] constraints = [components_or_blank(card, 3, 'C1', 0)] enforced = [double_or_blank(card, 4, 'D1', 0.0)] else: gids = [ integer(card, 2, 'G1'), integer(card, 5, 'G2'), ] # :0 if scalar point 1-6 if grid constraints = [components_or_blank(card, 3, 'C1', 0), components_or_blank(card, 6, 'C2', 0)] enforced = [double_or_blank(card, 4, 'D1', 0.0), double_or_blank(card, 7, 'D2', 0.0)] return SPCD(sid, gids, constraints, enforced, comment=comment)
def add_card(cls, card, comment=''): eid = integer(card, 1, 'eid') ga = integer(card, 2, 'ga') gb = integer(card, 3, 'gb') cb = components_or_blank(card, 4, 'cb') alpha = double_or_blank(card, 5, 'alpha', 0.0) assert len(card) <= 6, 'len(RBAR1 card) = %i' % len(card) return RBAR1(eid, ga, gb, cb, alpha, comment=comment)
def parse(self, card, icard=0, comment=''): noffset = 3 * icard sid = integer(card, 1, 'sid') node = integer(card, 2 + noffset, 'node_p') component = int(components_or_blank(card, 3 + noffset, 'c', 0)) scale = double(card, 4 + noffset, 'scale') data = (sid, node, component, scale) return data, comment
def add_card(cls, card, comment=''): """ Adds a RROD card from ``BDF.add_card(...)`` Parameters ---------- card : BDFCard() a BDFCard object comment : str; default='' a comment for the card """ eid = integer(card, 1, 'eid') ga = integer(card, 2, 'ga') gb = integer(card, 3, 'gb') cma = components_or_blank(card, 4, 'cma') cmb = components_or_blank(card, 5, 'cmb') alpha = double_or_blank(card, 6, 'alpha', 0.0) assert len(card) <= 7, 'len(RROD card) = %i\ncard=%s' % (len(card), card) return RROD(eid, [ga, gb], cma, cmb, alpha, comment=comment)
def get_mpc_constraint(card): #: Set identification number. (Integer > 0) constraint_id = integer(card, 1, 'conid') #: Identification number of grid or scalar point. (Integer > 0) #gids = [] #: Component number. (Any one of the Integers 1 through 6 for grid #: points; blank or zero for scalar points.) #constraints = [] #: Coefficient. (Real; Default = 0.0 except A1 must be nonzero.) #enforced = [] constraints = [] fields = card.fields(0) nfields = len(fields) - 1 for iField in range(2, nfields, 8): grid = integer(card, iField, 'gid') component = components_or_blank(card, iField + 1, 'constraint', 0) # scalar point value = double_or_blank(card, iField + 2, 'enforced', 0.0) constraints.append([grid, int(component), value]) #self.gids.append(grid) #self.constraints.append(component) #self.enforced.append(value) if iField + 3 > nfields: break grid = integer(card, iField + 3, 'gid') component = components_or_blank(card, iField + 4, 'constraint', 0) # scalar point value = double_or_blank(card, iField + 5, 'enforced') constraints.append([grid, int(component), value]) #self.gids.append(grid) #self.constraints.append(component) #self.enforced.append(value) return constraint_id, constraints
def add_card(cls, card, comment=''): conid = integer(card, 1, 'conid') gids = [] constraints = [] enforced = [] fields = card.fields(0) nfields = len(fields) i = 1 for ifield in range(2, nfields, 8): grid = integer(card, ifield, 'G%i' % i) component = components_or_blank(card, ifield + 1, 'constraint%i' % i, 0) # scalar point if i == 1: enforcedi = double(card, ifield + 2, 'enforced%i' % i) if enforcedi == 0.0: raise RuntimeError('enforced1 must be nonzero; enforcedi=%r' % enforcedi) else: enforcedi = double_or_blank(card, ifield + 2, 'enforced%i' % i, 0.0) gids.append(grid) constraints.append(component) enforced.append(enforcedi) i += 1 if ifield + 4 > nfields and i != 2: # if G2 is empty (it's ifield+4 because nfields is length based # and not loop friendly) break grid = integer(card, ifield + 3, 'G%i' % i) component = components_or_blank(card, ifield + 4, 'constraint%i' % i, 0) # scalar point enforcedi = double_or_blank(card, ifield + 5, 'enforced%i' % i) gids.append(grid) constraints.append(component) enforced.append(enforcedi) i += 1 return MPC(conid, gids, constraints, enforced, comment=comment)
def get_mpc_constraint(card): #: Set identification number. (Integer > 0) constraint_id = integer(card, 1, 'conid') #: Identification number of grid or scalar point. (Integer > 0) #gids = [] #: Component number. (Any one of the Integers 1 through 6 for grid #: points; blank or zero for scalar points.) #constraints = [] #: Coefficient. (Real; Default = 0.0 except A1 must be nonzero.) #enforced = [] constraints = [] fields = card.fields(0) nfields = len(fields) - 1 for iField in range(2, nfields, 8): grid = integer(card, iField, 'gid') component = components_or_blank(card, iField + 1, 'constraint', 0) # scalar point value = double_or_blank(card, iField + 2, 'enforced', 0.0) constraints.append([grid, int(component), value]) #self.gids.append(grid) #self.constraints.append(component) #self.enforced.append(value) if iField + 3 > nfields: break grid = integer(card, iField + 3, 'gid') component = components_or_blank(card, iField + 4, 'constraint', 0) # scalar point value = double_or_blank(card, iField + 5, 'enforced') constraints.append([grid, int(component), value]) #self.gids.append(grid) #self.constraints.append(component) #self.enforced.append(value) return constraint_id, constraints
def add_card(cls, card, comment=''): eid = integer(card, 1, 'eid') diameter_ratio = double_or_blank(card, 2, 'diameter_ratio', 0.1) nfields = len(card) assert nfields % 2 == 1, 'nfields=%s card=%s' % (nfields, card) nids = [] components = [] j = 1 for i in range(3, nfields, 2): nid = integer(card, i, 'nid_%s' % j) comp = components_or_blank(card, i+1, 'components_%i' % j) nids.append(nid) components.append(comp) j += 1 return RSPLINE(eid, nids, components, diameter_ratio=diameter_ratio, comment=comment)
def add_card(cls, card, comment=''): conid = integer(card, 1, 'conid') # really a support id sid nfields = len(card) assert len(card) > 2 nterms = int((nfields - 1.) / 2.) n = 1 IDs = [] Cs = [] for i in range(nterms): nstart = 2 + 2 * i ID = integer(card, nstart, 'ID%s' % n) C = components_or_blank(card, nstart + 1, 'component%s' % n, '0') IDs.append(ID) Cs.append(C) n += 1 return SUPORT1(conid, IDs, Cs, comment=comment)
def add_card(cls, card, comment=''): conid = integer(card, 1, 'conid') # really a support id sid nfields = len(card) assert len(card) > 2 nterms = int((nfields - 1.) / 2.) n = 1 IDs = [] Cs = [] for i in range(nterms): nstart = 2 + 2 * i ID = integer(card, nstart, 'ID%s' % n) C = components_or_blank(card, nstart + 1, 'component%s' % n, '0') IDs.append(ID) Cs.append(C) n += 1 return SUPORT1(conid, IDs, Cs, comment=comment)
def __init__(self, card=None, data=None, comment=''): Method.__init__(self, card, data) if comment: self._comment = comment if card: #: Set identification number. (Unique Integer > 0) self.sid = integer(card, 1, 'sid') #: Method of eigenvalue extraction. (Character: 'INV' for inverse #: power method or 'SINV' for enhanced inverse power method.) #: apparently it can also be blank... self.method = string_or_blank(card, 2, 'method') if self.method not in ['INV', 'SINV', None]: msg = 'method must be INV or SINV. method=|%s|' % self.method raise RuntimeError(msg) #: Eigenvalue range of interest. (Real, L1 < L2) self.L1 = double(card, 3, 'L1') self.L2 = double(card, 4, 'L2') if not self.L1 < self.L2: msg = 'L1=%s L2=%s; L1<L2 is requried' % (self.L1, self.L2) raise RuntimeError(msg) #: Estimate of number of roots in positive range not used for #: METHOD = 'SINV'. (Integer > 0) self.nep = integer_or_blank(card, 5, 'nep', 0) #: Desired number of positive and negative roots. #: (Integer>0; Default = 3*NEP) self.ndp = integer_or_blank(card, 6, 'ndp', 3 * self.nep) self.ndn = integer_or_blank(card, 7, 'ndn', 3 * self.nep) #: Method for normalizing eigenvectors. #: ('MAX' or 'POINT';Default='MAX') self.norm = string_or_blank(card, 9, 'norm', 'MAX') if self.norm == 'POINT': self.G = integer(card, 10, 'G') self.C = components(card, 11, 'C') else: self.G = integer_or_blank(card, 10, 'G') self.C = components_or_blank(card, 11, 'C') assert len(card) <= 12, 'len(EIGB card) = %i' % len(card) else: raise NotImplementedError('EIGB')
def add_card(cls, card, comment=''): # TODO: remove fields... #fields = card.fields(1) nfields = len(card) assert len(card) > 1, card nterms = int(nfields / 2.) n = 1 IDs = [] Cs = [] for i in range(nterms): nstart = 1 + 2 * i ID = integer(card, nstart, 'ID%s' % n) C = components_or_blank(card, nstart + 1, 'component%s' % n, '0') IDs.append(ID) Cs.append(C) n += 1 return SUPORT(IDs, Cs, comment=comment)
def add_card(cls, card, comment=''): # TODO: remove fields... #fields = card.fields(1) nfields = len(card) assert len(card) > 1, card nterms = int(nfields / 2.) n = 1 IDs = [] Cs = [] for i in range(nterms): nstart = 1 + 2 * i ID = integer(card, nstart, 'ID%s' % n) C = components_or_blank(card, nstart + 1, 'component%s' % n, '0') IDs.append(ID) Cs.append(C) n += 1 return SUPORT(IDs, Cs, comment=comment)
def add_card(self, card, comment=''): # type: (Any, str) -> GRID """ Adds a GRID card from ``BDF.add_card(...)`` Parameters ---------- card : BDFCard() a BDFCard object comment : str; default='' a comment for the card """ nfields = len(card) #print('card = %s' % card) #: Node ID nid = integer(card, 1, 'nid') #: Grid point coordinate system cp = integer_or_blank(card, 2, 'cp', 0) #: node location in local frame xyz = [ double_or_blank(card, 3, 'x1', 0.), double_or_blank(card, 4, 'x2', 0.), double_or_blank(card, 5, 'x3', 0.) ] if nfields > 6: #: Analysis coordinate system cd = integer_or_blank(card, 6, 'cd', 0) #: SPC constraint ps = components_or_blank(card, 7, 'ps', '') #u(integer_or_blank(card, 7, 'ps', '')) #: Superelement ID seid = integer_or_blank(card, 8, 'seid', 0) assert len(card) <= 9, 'len(GRID card) = %i\ncard=%s' % (len(card), card) else: cd = 0 ps = '' seid = 0 self.add(nid, xyz, cp, cd, ps, seid, comment=comment)
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') gn = integer(card, 2, 'gn') cm = components_or_blank(card, 3, 'cm') alpha = integer_or_double(card, len(card) - 1, 'alpha') if isinstance(alpha, float): # alpha is correct # the last field is not part of Gmi n = 1 else: # the last field is part of Gmi n = 0 alpha = 0.0 j = 4 Gmi = [] for i in range(len(card) - 4 - n): gmi = integer(card, j + i, 'Gm%i' % (i + 1)) Gmi.append(gmi) return RBE2(eid, gn, cm, Gmi, alpha, comment=comment)
def add_card(cls, card, comment=''): sid = integer(card, 1, 'sid') method = string_or_blank(card, 2, 'method') L1 = double(card, 3, 'L1') L2 = double(card, 4, 'L2') nep = integer_or_blank(card, 5, 'nep', 0) ndp = integer_or_blank(card, 6, 'ndp', 3 * nep) ndn = integer_or_blank(card, 7, 'ndn', 3 * nep) norm = string_or_blank(card, 9, 'norm', 'MAX') if norm == 'POINT': G = integer(card, 10, 'G') C = components(card, 11, 'C') else: G = integer_or_blank(card, 10, 'G') C = components_or_blank(card, 11, 'C') assert len(card) <= 12, 'len(EIGB card) = %i\ncard=%s' % (len(card), card) return EIGB(sid, method, L1, L2, nep, ndp, ndn, norm, G, C, comment=comment)
def add_card(cls, card, comment=''): eid = integer(card, 1, 'eid') gn = integer(card, 2, 'gn') cm = components_or_blank(card, 3, 'cm') alpha = integer_or_double(card, len(card) - 1, 'alpha') if isinstance(alpha, float): # alpha is correct # the last field is not part of Gmi n = 1 else: # the last field is part of Gmi n = 0 alpha = 0.0 j = 4 Gmi = [] for i in range(len(card) - 4 - n): gmi = integer(card, j + i, 'Gm%i' % (i + 1)) Gmi.append(gmi) return RBE2(eid, gn, cm, Gmi, alpha, comment=comment)
def add_card(cls, card, comment=''): eid = integer(card, 1, 'eid') diameter_ratio = double_or_blank(card, 2, 'diameter_ratio', 0.1) nfields = len(card) assert nfields % 2 == 1, 'nfields=%s card=%s' % (nfields, card) dependent_nids = [] dependent_components = [] independent_nid = integer(card, 3, 'nid_1') j = 2 for i in range(4, nfields, 2): nid = integer(card, i, 'nid_%s' % j) comp = components_or_blank(card, i + 1, 'components_%i' % j) dependent_nids.append(nid) dependent_components.append(comp) j += 1 return RSPLINE(eid, independent_nid, dependent_nids, dependent_components, diameter_ratio=diameter_ratio, comment=comment)
def add_card(cls, card, comment=''): eid = integer(card, 1, 'eid') blank(card, 2, 'blank') refgrid = integer(card, 3, 'refgrid') refc = components_or_blank(card, 4, 'refc') fields = [field.upper() if isinstance(field, string_types) else field for field in card[5:]] ioffset = 5 iwt_max = len(fields) + ioffset try: ialpha = fields.index('ALPHA') + ioffset iwt_max = ialpha # the index to start parsing UM ium_stop = ialpha # the index to stop parsing UM except ValueError: ialpha = None ium_stop = iwt_max try: ium = fields.index('UM') + ioffset iwt_max = ium except ValueError: ium = None i = ioffset n = 1 weights = [] comps = [] Gijs = [] while i < iwt_max: Gij = [] wtname = 'wt' + str(n) wt = double_or_blank(card, i, wtname) if wt is not None: cname = 'c'+str(n) compi = components_or_blank(card, i + 1, cname) #print("%s=%s %s=%s" % (wtname, wt, cname, compi)) i += 2 gij = 0 j = 0 while isinstance(gij, int) and i < iwt_max: j += 1 gij_name = 'g%s,%s' % (n, j) gij = integer_double_or_blank(card, i, gij_name) if isinstance(gij, float): break #print("%s = %s" % (gij_name, gij)) if gij is not None: Gij.append(gij) i += 1 assert compi is not None assert len(Gij) > 0, Gij assert Gij[0] is not None, Gij weights.append(wt) comps.append(compi) Gijs.append(Gij) #print('----finished a group=%r----' % weight_cg_group) else: i += 1 Gmi = [] Cmi = [] if ium: #print('UM = %s' % card.field(ium)) # UM i = ium + 1 n = 1 #print("i=%s iUmStop=%s" % (i, iUmStop)) for j in range(i, ium_stop, 2): gm_name = 'gm' + str(n) cm_name = 'cm' + str(n) gmi = integer_or_blank(card, j, gm_name) if gmi is not None: cmi = components(card, j + 1, cm_name) #print("gmi=%s cmi=%s" % (gmi, cmi)) Gmi.append(gmi) Cmi.append(cmi) if ialpha: alpha = double_or_blank(card, ialpha + 1, 'alpha') else: #: thermal expansion coefficient alpha = 0.0 return RBE3(eid, refgrid, refc, weights, comps, Gijs, Gmi=Gmi, Cmi=Cmi, alpha=alpha, comment=comment)
def test_components_or_blank_02(self): # single ints val = components_or_blank(BDFCard([0]), 0, 'field', 'default') self.assertEqual(val, '0') val = components_or_blank(BDFCard([1]), 0, 'field', 'default') self.assertEqual(val, '1') # single strings val = components_or_blank(BDFCard(['0']), 0, 'field', 'default') self.assertEqual(val, '0') val = components_or_blank(BDFCard(['1']), 0, 'field', 'default') self.assertEqual(val, '1') # double ints val = components_or_blank(BDFCard(['123']), 0, 'field', 'default') self.assertEqual(val, '123') val = components_or_blank(BDFCard([123]), 0, 'field', 'default') self.assertEqual(val, '123') val = components_or_blank(BDFCard([321]), 0, 'field', 'default') self.assertEqual(val, '123') # embedded whiteshape with self.assertRaises(SyntaxError): val = components_or_blank(BDFCard(['12 3']), 0, 'field', 'default') # all numbers val = components_or_blank(BDFCard(['123456']), 0, 'field', 'default') self.assertEqual(val, '123456') # invalid 0's defined with numbers with self.assertRaises(SyntaxError): val = components_or_blank(BDFCard(['0123456']), 0, 'field', 'default') with self.assertRaises(SyntaxError): val = components_or_blank(BDFCard(['01']), 0, 'field', 'default') # doubles with self.assertRaises(SyntaxError): val = components_or_blank(BDFCard(['4524']), 0, 'field', 'default') # only 0 to 6 with self.assertRaises(SyntaxError): val = components_or_blank(BDFCard(['7']), 0, 'field', 'default') with self.assertRaises(SyntaxError): val = components_or_blank(BDFCard([7]), 0, 'field', 'default') # dumb input with self.assertRaises(SyntaxError): val = components_or_blank(BDFCard(['4.0']), 0, 'field', 'default') with self.assertRaises(SyntaxError): val = components_or_blank(BDFCard(['-4.0']), 0, 'field', 'default') with self.assertRaises(SyntaxError): val = components_or_blank(BDFCard(['asdf']), 0, 'field', 'default') with self.assertRaises(SyntaxError): val = components_or_blank(BDFCard(['-1']), 0, 'field', 'default') # blank val = components_or_blank(BDFCard([' ']), 0, 'field', 'default') self.assertEqual(val, 'default') val = components_or_blank(BDFCard([None]), 0, 'field', 'default') self.assertEqual(val, 'default')
def add_card(self, card, comment=""): # self.model.log.debug('RBE2.add') i = self.i # if comment: # self.comment = comment eid = integer(card, 1, "element_id") # if comment: # self.comment = comment self.element_id[i] = integer(card, 1, "eid") blank(card, 2, "blank") self.refgrid[i] = integer(card, 3, "refgrid") self.refc[i] = components_or_blank(card, 4, "refc", 0) # iUM = fields.index('UM') fields = [field.upper() if isinstance(field, string_types) else field for field in card[5:]] iOffset = 5 iWtMax = len(fields) + iOffset try: iAlpha = fields.index("ALPHA") + iOffset iWtMax = iAlpha # the index to start parsing UM iUmStop = iAlpha # the index to stop parsing UM except ValueError: iAlpha = None iUmStop = iWtMax # print("iAlpha = %s" % iAlpha) try: iUm = fields.index("UM") + iOffset iWtMax = iUm except ValueError: iUm = None # print("iAlpha=%s iUm=%s" % (iAlpha, iUm)) # print("iAlpha=%s iWtMax=%s" % (iAlpha, iWtMax)) # print("iUM = %s" % iUM) WtCG_groups = [] i = iOffset n = 1 while i < iWtMax: Gij = [] wtname = "wt" + str(n) wt = double_or_blank(card, i, wtname) if wt is not None: cname = "c" + str(n) ci = components_or_blank(card, i + 1, cname) # print("%s=%s %s=%s" % (wtname, wt, cname, ci)) i += 2 gij = 0 j = 0 while isinstance(gij, int) and i < iWtMax: j += 1 gij_name = "g%s,%s" % (n, j) gij = integer_double_or_blank(card, i, gij_name) if isinstance(gij, float): break # print("%s = %s" % (gij_name, gij)) if gij is not None: Gij.append(gij) i += 1 wtCG_group = [wt, ci, Gij] WtCG_groups.append(wtCG_group) # print('----finished a group=%r----' % wtCG_group) else: i += 1 self.WtCG_groups[i] = WtCG_groups Gmi = [] Cmi = [] # print("") if iUm: # print('UM = %s' % card.field(iUm)) # UM i = iUm + 1 n = 1 # print("i=%s iUmStop=%s" % (i, iUmStop)) for j in range(i, iUmStop, 2): gm_name = "gm" + str(n) cm_name = "cm" + str(n) gmi = integer_or_blank(card, j, gm_name) if gmi is not None: cmi = components(card, j + 1, cm_name) # print("gmi=%s cmi=%s" % (gmi, cmi)) Gmi.append(gmi) Cmi.append(cmi) self.Gmi[i] = Gmi self.Cmi[i] = Cmi if iAlpha: alpha = double_or_blank(card, iAlpha + 1, "alpha", 0.0) else: alpha = 0.0 self.alpha[i] = alpha
def add_card(cls, card, comment=''): """ Adds a RBE3 card from ``BDF.add_card(...)`` Parameters ---------- card : BDFCard() a BDFCard object comment : str; default='' a comment for the card """ eid = integer(card, 1, 'eid') blank(card, 2, 'blank') refgrid = integer(card, 3, 'refgrid') refc = components_or_blank(card, 4, 'refc') fields = [ field.upper() if isinstance(field, string_types) else field for field in card[5:] ] ioffset = 5 iwt_max = len(fields) + ioffset try: ialpha = fields.index('ALPHA') + ioffset iwt_max = ialpha # the index to start parsing UM ium_stop = ialpha # the index to stop parsing UM except ValueError: ialpha = None ium_stop = iwt_max try: ium = fields.index('UM') + ioffset iwt_max = ium except ValueError: ium = None i = ioffset n = 1 weights = [] comps = [] Gijs = [] while i < iwt_max: Gij = [] wtname = 'wt' + str(n) wt = double_or_blank(card, i, wtname) if wt is not None: cname = 'c' + str(n) compi = components_or_blank(card, i + 1, cname) #print("%s=%s %s=%s" % (wtname, wt, cname, compi)) i += 2 gij = 0 j = 0 while isinstance(gij, int) and i < iwt_max: j += 1 gij_name = 'g%s,%s' % (n, j) gij = integer_double_or_blank(card, i, gij_name) if isinstance(gij, float): break #print("%s = %s" % (gij_name, gij)) if gij is not None: Gij.append(gij) i += 1 assert compi is not None assert len(Gij) > 0, Gij assert Gij[0] is not None, Gij weights.append(wt) comps.append(compi) Gijs.append(Gij) #print('----finished a group=%r----' % weight_cg_group) else: i += 1 Gmi = [] Cmi = [] if ium: #print('UM = %s' % card.field(ium)) # UM i = ium + 1 n = 1 #print("i=%s iUmStop=%s" % (i, iUmStop)) for j in range(i, ium_stop, 2): gm_name = 'gm' + str(n) cm_name = 'cm' + str(n) gmi = integer_or_blank(card, j, gm_name) if gmi is not None: cmi = parse_components(card, j + 1, cm_name) #print("gmi=%s cmi=%s" % (gmi, cmi)) Gmi.append(gmi) Cmi.append(cmi) if ialpha: alpha = double_or_blank(card, ialpha + 1, 'alpha') else: #: thermal expansion coefficient alpha = 0.0 return RBE3(eid, refgrid, refc, weights, comps, Gijs, Gmi=Gmi, Cmi=Cmi, alpha=alpha, comment=comment)
def test_components_or_blank_02(self): # single ints val = components_or_blank(BDFCard([0]), 0, 'field', 'default') self.assertEqual(val, '0') val = components_or_blank(BDFCard([1]), 0, 'field', 'default') self.assertEqual(val, '1') # single strings val = components_or_blank(BDFCard(['0']), 0, 'field', 'default') self.assertEqual(val, '0') val = components_or_blank(BDFCard(['1']), 0, 'field', 'default') self.assertEqual(val, '1') # double ints val = components_or_blank(BDFCard(['123']), 0, 'field', 'default') self.assertEqual(val, '123') val = components_or_blank(BDFCard([123]), 0, 'field', 'default') self.assertEqual(val, '123') val = components_or_blank(BDFCard([321]), 0, 'field', 'default') self.assertEqual(val, '123') # embedded whiteshape with self.assertRaises(SyntaxError): val = components_or_blank(BDFCard(['12 3']), 0, 'field', 'default') # all numbers val = components_or_blank(BDFCard(['123456']), 0, 'field', 'default') self.assertEqual(val, '123456') # invalid 0's defined with numbers with self.assertRaises(SyntaxError): val = components_or_blank(BDFCard(['0123456']), 0, 'field', 'default') with self.assertRaises(SyntaxError): val = components_or_blank(BDFCard(['01']), 0, 'field', 'default') # doubles with self.assertRaises(SyntaxError): val = components_or_blank(BDFCard(['4524']), 0, 'field', 'default') # only 0 to 6 with self.assertRaises(SyntaxError): val = components_or_blank(BDFCard(['7']), 0, 'field', 'default') with self.assertRaises(SyntaxError): val = components_or_blank(BDFCard([7]), 0, 'field', 'default') # dumb input with self.assertRaises(SyntaxError): val = components_or_blank(BDFCard(['4.0']), 0, 'field', 'default') with self.assertRaises(SyntaxError): val = components_or_blank(BDFCard(['-4.0']), 0, 'field', 'default') with self.assertRaises(SyntaxError): val = components_or_blank(BDFCard(['asdf']), 0, 'field', 'default') with self.assertRaises(SyntaxError): val = components_or_blank(BDFCard(['-1']), 0, 'field', 'default') # blank val = components_or_blank(BDFCard([' ']), 0, 'field', 'default') self.assertEqual(val, 'default') val = components_or_blank(BDFCard([None]), 0, 'field', 'default') self.assertEqual(val, 'default')
def add_card(self, card, comment=''): #self.model.log.debug('RBE2.add') i = self.i #if comment: # self.comment = comment eid = integer(card, 1, 'element_id') #if comment: # self.comment = comment self.element_id[i] = integer(card, 1, 'eid') blank(card, 2, 'blank') self.refgrid[i] = integer(card, 3, 'refgrid') self.refc[i] = components_or_blank(card, 4, 'refc', 0) #iUM = fields.index('UM') fields = [ field.upper() if isinstance(field, string_types) else field for field in card[5:] ] iOffset = 5 iWtMax = len(fields) + iOffset try: iAlpha = fields.index('ALPHA') + iOffset iWtMax = iAlpha # the index to start parsing UM iUmStop = iAlpha # the index to stop parsing UM except ValueError: iAlpha = None iUmStop = iWtMax #print("iAlpha = %s" % iAlpha) try: iUm = fields.index('UM') + iOffset iWtMax = iUm except ValueError: iUm = None #print("iAlpha=%s iUm=%s" % (iAlpha, iUm)) #print("iAlpha=%s iWtMax=%s" % (iAlpha, iWtMax)) #print("iUM = %s" % iUM) WtCG_groups = [] i = iOffset n = 1 while i < iWtMax: Gij = [] wtname = 'wt' + str(n) wt = double_or_blank(card, i, wtname) if wt is not None: cname = 'c' + str(n) ci = components_or_blank(card, i + 1, cname) #print("%s=%s %s=%s" % (wtname, wt, cname, ci)) i += 2 gij = 0 j = 0 while isinstance(gij, int) and i < iWtMax: j += 1 gij_name = 'g%s,%s' % (n, j) gij = integer_double_or_blank(card, i, gij_name) if isinstance(gij, float): break #print("%s = %s" % (gij_name, gij)) if gij is not None: Gij.append(gij) i += 1 wtCG_group = [wt, ci, Gij] WtCG_groups.append(wtCG_group) #print('----finished a group=%r----' % wtCG_group) else: i += 1 self.WtCG_groups[i] = WtCG_groups Gmi = [] Cmi = [] #print("") if iUm: #print('UM = %s' % card.field(iUm)) # UM i = iUm + 1 n = 1 #print("i=%s iUmStop=%s" % (i, iUmStop)) for j in range(i, iUmStop, 2): gm_name = 'gm' + str(n) cm_name = 'cm' + str(n) gmi = integer_or_blank(card, j, gm_name) if gmi is not None: cmi = components(card, j + 1, cm_name) #print("gmi=%s cmi=%s" % (gmi, cmi)) Gmi.append(gmi) Cmi.append(cmi) self.Gmi[i] = Gmi self.Cmi[i] = Cmi if iAlpha: alpha = double_or_blank(card, iAlpha + 1, 'alpha', 0.0) else: alpha = 0.0 self.alpha[i] = alpha