示例#1
0
 def add_card(cls, card, comment=''):
     sid = integer(card, 1, 'sid')
     f1 = double(card, 2, 'f1')  # default=0.0 ?
     f2 = double(card, 3, 'f2')
     ndf = integer_or_blank(card, 4, 'nf', 1)
     assert len(card) <= 5, 'len(FREQ2 card) = %i\ncard=%s' % (len(card), card)
     return FREQ2(sid, f1, f2, ndf, comment=comment)
示例#2
0
    def __init__(self, card=None, data=None, comment=''):
        Table.__init__(self, card, data)
        if comment:
            self._comment = comment
        if card:
            self.tid = integer(card, 1, 'tid')
            self.x1 = double(card, 2, 'x1')
            self.x2 = double(card, 3, 'x2')
            assert self.x2 != 0.0

            nfields = len(card) - 1
            nterms = (nfields - 9) // 2
            if nterms < 0:
                raise SyntaxError('%r card is too short' % self.type)
            xy = []
            for i in range(nterms):
                n = 9 + i * 2
                if card.field(n) == 'ENDT':
                    break
                x = double_or_string(card, n, 'x' + str(i + 1))
                y = double_or_string(card, n + 1, 'y' + str(i + 1))
                if x == 'SKIP' or y == 'SKIP':
                    continue
                xy += [x, y]
            string(card, nfields, 'ENDT')
            is_data = False
        else:
            self.tid = data[0]
            self.x1 = data[1]
            self.x2 = data[2]
            xy = data[3:]
            is_data = True
        self.parse_fields(xy, nrepeated=2, is_data=is_data)
    def add_card(cls, card, comment=''):
        mid = integer(card, 1, 'mid')
        tid = integer_or_blank(card, 2, 'tid')
        Type = string(card, 3, 'Type')

        if Type not in ['NLELAST', 'PLASTIC']:
            raise ValueError('MATS1 Type must be [NLELAST, PLASTIC]; Type=%r' % Type)
        if Type == 'NLELAST':
            # should we even read these?
            h = None
            hr = None
            yf = None
            limit1 = None
            limit2 = None
            #h = blank(card, 4, 'h')
            #hr = blank(card, 6, 'hr')
            #yf = blank(card, 5, 'yf')
            #limit1 = blank(card, 7, 'yf')
            #limit2 = blank(card, 8, 'yf')
        else:
            h = double_or_blank(card, 4, 'H')
            yf = integer_or_blank(card, 5, 'yf', 1)
            hr = integer_or_blank(card, 6, 'hr', 1)
            limit1 = double(card, 7, 'limit1')

            if yf in [3, 4]:
                limit2 = double(card, 8, 'limit2')
            else:
                #limit2 = blank(card, 8, 'limit2')
                limit2 = None
        assert len(card) <= 9, 'len(MATS1 card) = %i\ncard=%s' % (len(card), card)
        return MATS1(mid, tid, Type, h, hr, yf, limit1, limit2, comment=comment)
示例#4
0
文件: temp.py 项目: hurlei/pyNastran
    def add_card(self, card, comment=''):
        assert self.n > 0, self.n
        i = self.i
        load_id = integer(card, 1, 'load_id')
        tbar = double(card, 3, 'Tbar')
        tprime = double(card, 4, 'Tprime')
        t1 = double_or_blank(card, 5, 'T1')
        t2 = double_or_blank(card, 6, 'T2')

        self.load_id[i] = load_id
        self.element_id[i] = integer(card, 2, 'element_id')
        self.tbar[i] = tbar
        self.tprime[i] = tprime
        self.temp[i, 0] = t1
        self.temp[i, 1] = t2
        self.i += 1

        if len(card) >= 7:
            # i must be < self.n
            eids = expand_thru(card[9:])
            for eid in eids:
                self.load_id[i] = load_id
                assert isinstance(eid, int), eid
                self.element_id[i] = eid
                self.tbar[i] = tbar
                self.tprime[i] = tprime
                self.temp[i, 0] = t1
                self.temp[i, 1] = t2
                self.i += 1
                assert self.i <= self.n

        assert len(card) <= 7, '%s; n=%s' % (card, len(card))
        #assert len(card) <= 7, len(card)
        self.eids = None
示例#5
0
文件: mat8.py 项目: hurlei/pyNastran
    def add_card(self, card, comment=''):
        i = self.i

        mid = integer(card, 1, 'mid')
        if comment:
            self.set_comment(mid, comment)

        self.material_id[i] = mid
        self.e11[i] = double(card, 2, 'E11')    #: .. todo:: is this the correct default
        self.e22[i] = double(card, 3, 'E22')    #: .. todo:: is this the correct default
        self.nu12[i] = double_or_blank(card, 4, 'nu12', 0.0)

        self.g12[i] = double_or_blank(card, 5, 'g12', 0.0)
        self.g1z[i] = double_or_blank(card, 6, 'g1z', 1e8)
        self.g2z[i] = double_or_blank(card, 7, 'g2z', 1e8)
        self.rho[i] = double_or_blank(card, 8, 'rho', 0.0)
        self.a1[i] = double_or_blank(card, 9, 'a1', 0.0)
        self.a2[i] = double_or_blank(card, 10, 'a2', 0.0)
        self.TRef[i] = double_or_blank(card, 11, 'TRef', 0.0)
        self.Xt[i] = double_or_blank(card, 12, 'Xt', 0.0)
        self.Xc[i] = double_or_blank(card, 13, 'Xc', self.Xt[i])
        self.Yt[i] = double_or_blank(card, 14, 'Yt', 0.0)
        self.Yc[i] = double_or_blank(card, 15, 'Yc', self.Yt[i])
        self.S[i] = double_or_blank(card, 16, 'S', 0.0)
        self.ge[i] = double_or_blank(card, 17, 'ge', 0.0)
        self.F12[i] = double_or_blank(card, 18, 'F12', 0.0)
        self.strn[i] = double_or_blank(card, 19, 'strn', 0.0)
        assert len(card) <= 20, 'len(MAT8 card) = %i\ncard=%s' % (len(card), card)
        self.i += 1
示例#6
0
    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')

            #: Coordinates of point in complex plane. (Real)
            self.alpha1 = double(card, 2, 'alpha1')
            #: Coordinates of point in complex plane. (Real)
            self.omega1 = double(card, 3, 'omega1')
            #: Multiplicity of complex root at pole defined by point at ALPHAi
            #: and OMEGAi
            self.m1 = integer(card, 4, 'm1')

            #: Coordinates of point in complex plane. (Real)
            self.alpha2 = double(card, 5, 'alpha2')
            #: Coordinates of point in complex plane. (Real)
            self.omega2 = double(card, 6, 'omega2')
            #: Multiplicity of complex root at pole defined by point at ALPHAi
            #: and OMEGAi
            self.m2 = integer(card, 7, 'm2')
            assert len(card) == 8, 'len(EIGP card) = %i' % len(card)
        else:
            raise NotImplementedError('EIGP')
示例#7
0
    def add_card(cls, card, comment=''):
        sid = integer(card, 1, 'sid')
        excite_id = integer(card, 2, 'excite_id') # DAREA, FBALOAD, SLOAD
        delay = integer_double_or_blank(card, 3, 'delay', 0) # DELAY, FBADLAY
        dphase = integer_double_or_blank(card, 4, 'dphase', 0) # DPHASE, FBAPHAS
        power = integer_double_or_blank(card, 5, 'power/tp/rp', 0) # TABLEDi/power
        rho = double(card, 6, 'rho')
        b = double(card, 7, 'bulk modulus')

        assert len(card) <= 8, 'len(ACSRCE card) = %i\n%s' % (len(card), card)
        return ACSRCE(sid, excite_id, delay, dphase, power, rho, b, comment=comment)
示例#8
0
    def add(self, card=None, comment=''):
        if comment:
            self._comment = comment
        i = self.i
        #: Identification number of a MAT1, MAT2, or MAT9 entry.
        self.material_id[i] = integer(card, 1, 'mid')
        #: Identification number of a TABLES1 or TABLEST entry. If H is
        #: given, then this field must be blank.
        self.table_id[i] = integer_or_blank(card, 2, 'tid', 0)
        #: Type of material nonlinearity. ('NLELAST' for nonlinear elastic
        #: or 'PLASTIC' for elastoplastic.)
        self.Type[i] = string(card, 3, 'Type')

        if self.Type[i] == 'NLELAST':
            self.h[i] = blank(card, 4, 'h')
            self.hr[i] = blank(card, 6, 'hr')
            self.yf[i] = blank(card, 5, 'yf')
            self.limit1[i] = blank(card, 7, 'yf')
            self.limit2[i] = blank(card, 8, 'yf')
        else:
            #: Work hardening slope (slope of stress versus plastic strain) in
            #: units of stress. For elastic-perfectly plastic cases, H=0.0.
            #: For more than a single slope in the plastic range, the
            #: stress-strain data must be supplied on a TABLES1 entry
            #: referenced by TID, and this field must be blank
            h = double_or_blank(card, 4, 'H')
            self.h[i] = h
            if h is None:
                self.hflag[i] = False
            else:
                self.hflag[i] = True

            #: Yield function criterion, selected by one of the following
            #: values (1) Von Mises (2) Tresca (3) Mohr-Coulomb
            #: (4) Drucker-Prager
            self.yf[i] = integer_or_blank(card, 5, 'yf', 1)

            #: Hardening Rule, selected by one of the following values
            #: (Integer): (1) Isotropic (Default) (2) Kinematic
            #: (3) Combined isotropic and kinematic hardening
            self.hr[i] = integer_or_blank(card, 6, 'hr', 1)
            #: Initial yield point
            self.limit1[i] = double(card, 7, 'limit1')

            if self.yf[i] == 3 or self.yf[i] == 4:
                #: Internal friction angle, measured in degrees, for the
                #: Mohr-Coulomb and Drucker-Prager yield criteria
                self.limit2[i] = double(card, 8, 'limit2')
            else:
                #self.limit2[i] = blank(card, 8, 'limit2')
                #self.limit2[i] = None
                pass
        assert len(card) <= 9, 'len(MATS1 card) = %i\ncard=%s' % (len(card), card)
        self.i += 1
示例#9
0
    def add_card(cls, card, comment=''):
        sid = integer(card, 1, 'sid')

        alpha1 = double(card, 2, 'alpha1')
        omega1 = double(card, 3, 'omega1')
        m1 = integer(card, 4, 'm1')

        alpha2 = double(card, 5, 'alpha2')
        omega2 = double(card, 6, 'omega2')
        m2 = integer(card, 7, 'm2')
        assert len(card) == 8, 'len(EIGP card) = %i\ncard=%s' % (len(card), card)
        return EIGP(sid, alpha1, omega1, m1, alpha2, omega2, m2, comment=comment)
示例#10
0
    def __init__(self, card=None, data=None, comment=''):
        if comment:
            self._comment = comment
        self.sid = integer(card, 1, 'sid')
        f1 = double(card, 2, 'f1')  # default=0.0 ?
        f2 = double(card, 3, 'f2')
        nf = integer_or_blank(card, 4, 'nf', 1)
        assert len(card) <= 5, 'len(FREQ2 card) = %i' % len(card)

        d = 1. / nf * log(f2 / f1)
        self.freqs = []
        for i in range(nf):
            self.freqs.append(f1 * exp(i * d))  # 0 based index
        self.clean_freqs()
示例#11
0
    def add_card(cls, card, comment=''):
        sid = integer(card, 1, 'sid')
        scale = double(card, 2, 'scale')

        scale_factors = []
        load_ids = []

        # alternating of scale factor & load set ID
        nloads = len(card) - 3
        assert nloads % 2 == 0
        for i in range(nloads // 2):
            n = 2 * i + 3
            scale_factors.append(double(card, n, 'scale_factor'))
            load_ids.append(integer(card, n + 1, 'load_id'))
        return cls(sid, scale, scale_factors, load_ids, comment=comment)
示例#12
0
    def __init__(self, card=None, data=None, comment=''):
        ThermalBC.__init__(self, card, data)
        if comment:
            self._comment = comment

        if card:
            #: NODAMB Ambient point for radiation exchange. (Integer > 0)
            self.nodamb = integer(card, 1, 'nodamb')
            assert self.nodamb > 0

            #: Radiation view factor between the face and the ambient point.
            #: (Real > 0.0)
            self.famb = double(card, 2, 'famb')
            assert self.famb > 0.0

            #: Control point for thermal flux load. (Integer > 0; Default = 0)
            self.cntrlnd = integer_or_blank(card, 3, 'cntrlnd', 0)
            assert self.cntrlnd >= 0

            nfields = card.nfields
            eids = fields(integer_or_string, card, 'eid', i=4, j=nfields)
            #: CHBDYi element identification number
            self.eids = expand_thru_by(eids)
        else:
            raise NotImplementedError(data)

        min_eid = min(self.eids)
        if min_eid < 1:
            msg = 'min(eids)=%i' % min_eid
            raise ValueError(msg)
示例#13
0
    def build(self):
        """
        :param cards: the list of MOMENT cards
        """
        cards = self._cards
        ncards = len(cards)
        self.n = ncards
        if ncards:
            float_fmt = self.model.float
            #: Property ID
            self.load_id = zeros(ncards, 'int32')
            self.node_id = zeros(ncards, 'int32')
            self.coord_id = zeros(ncards, 'int32')
            self.mag = zeros(ncards, float_fmt)
            self.xyz = zeros((ncards, 3), float_fmt)

            for i, card in enumerate(cards):
                self.load_id[i] = integer(card, 1, 'sid')
                self.node_id[i] = integer(card, 2, 'node')
                self.coord_id[i] = integer_or_blank(card, 3, 'cid', 0)
                self.mag[i] = double(card, 4, 'mag')
                xyz = [double_or_blank(card, 5, 'X1', 0.0),
                       double_or_blank(card, 6, 'X2', 0.0),
                       double_or_blank(card, 7, 'X3', 0.0)]
                self.xyz[i] = xyz
                assert len(card) <= 8, 'len(MOMENT card) = %i\ncard=%s' % (len(card), card)

            i = self.load_id.argsort()
            self.load_id = self.load_id[i]
            self.node_id = self.node_id[i]
            self.coord_id = self.coord_id[i]
            self.mag = self.mag[i]
            self.xyz = self.xyz[i]
            self._cards = []
            self._comments = []
示例#14
0
 def add_card(cls, card, comment=''):
     eid = integer(card, 1, 'eid')
     k = double(card, 2, 'k')
     s1 = integer_or_blank(card, 3, 's1', 0)
     s2 = integer_or_blank(card, 4, 's2', 0)
     assert len(card) <= 5, 'len(CELAS4 card) = %i\ncard=%s' % (len(card), card)
     return CELAS4(eid, k, s1, s2, comment=comment)
示例#15
0
 def add_card(cls, card, icard=0, comment=''):
     nfields = len(card) - 1
     assert nfields % 2 == 0, 'card=%s' % card
     i = 2 * icard
     sid = integer(card, i + 1, 'sid')
     temperature = double(card, i + 2, 'temp')
     return TEMPD(sid, temperature, comment=comment)
示例#16
0
 def add_card(cls, card, icard=0, comment=''):
     noffset = icard * 5
     pid = integer(card, 1 + noffset, 'pid')
     k = double(card, 2 + noffset, 'k')
     ge = double_or_blank(card, 3 + noffset, 'ge', 0.)
     s = double_or_blank(card, 4 + noffset, 's', 0.)
     return PELAS(pid, k, ge, s, comment=comment)
示例#17
0
    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)
示例#18
0
    def add_card(self, card, comment=''):
        pid = integer(card, 1, 'property_id')
        if comment:
            self.set_comment(pid, comment)
        i = self.i
        self.property_id[i] = pid
        self.thickness[i] = double(card, 3, 'thickness')

        self.twelveIt3[i] = double_or_blank(card, 5, '12*I/t^3', 1.0)
        self.tst[i] = double_or_blank(card, 7, 'ts/t', 0.833333)
        self.nsm[i] = double_or_blank(card, 8, 'nsm', 0.0)

        t_over_2 = self.thickness[i] / 2.
        self.z1[i] = double_or_blank(card, 9, 'z1', -t_over_2)
        self.z2[i] = double_or_blank(card, 10, 'z2', t_over_2)
        self.material_ids[i, :] = [
            integer(card, 2, 'material_id'),
            integer_or_blank(card, 4, 'material_id2', -1),
            integer_or_blank(card, 6, 'material_id3', -1),
            integer_or_blank(card, 11, 'material_id4', -1)
        ]
        #self.model.log.debug(self.material_ids[i, :])

        #ii = np.array([i])
        #file_obj = StringIO()
        #file_obj.write('<PSHELL object> n=%s\n' % self.n)
        #self.write_card_by_index(file_obj, i=ii)
        #print(file_obj.getvalue())


        assert len(card) <= 12, 'len(PSHELL card) = %i\ncard=%s' % (len(card), card)
        self.i += 1
示例#19
0
 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)
示例#20
0
    def __init__(self, card, comment=''):
        self.pid = integer(card, 1, 'property_id')
        self.sets = []
        self.Types = []
        self.gammas = []
        self._cps = []
        #self.set = integer(card, 2, 'set_id')
        #self.Type = string(card, 3, 'Type')
        #if self.Type not in ['NEWTON','PRANDTL-MEYER', 'CP']:
        #    raise RuntimeError('Type=%r' % Type)
        #self.gamma = double_or_blank(card, 4, 'gamma', 1.4)

        i = 2
        while i < len(card):
            self.sets.append(integer(card, i, 'set_id'))
            Type = string(card, i+1, 'Type')
            self.Types.append(Type)
            #if self.Type not in ['NEWTON','PRANDTL-MEYER', 'CP']:
                #raise RuntimeError('Type=%r' % Type)
            self.gammas.append(double_or_blank(card, i+2, 'gamma', 1.4))

            _cp = None
            if Type == 'CP':
                _cp = double(card, i+3, 'Cp')
            elif Type == 'NEWTON':
                _cp = double_or_blank(card, i+3, 'Cp_nominal', 2.0)
            self._cps.append(_cp)
            i += 7
示例#21
0
文件: temp.py 项目: hurlei/pyNastran
 def add_tempd(self, card, comment):
     assert (len(card) - 1) % 2 == 0, card
     for i in range(1, len(card), 2):
         temp_id = integer(card, i, 'temp_id')
         temperature = double(card, i+1, 'temperature')
         self._objs[temp_id].add_default(temp_id, temperature, comment)
     self.model.log.debug('TEMPs keys=%s' % self._objs.keys())
示例#22
0
 def add_card(cls, card, comment=''):
     conid = integer(card, 1, 'conid')
     rid = integer(card, 2, 'rid')
     hid = integer(card, 3, 'hid')
     c = components(card, 4, 'c')
     d = double(card, 5, 'd')
     return SPCAX(conid, rid, hid, c, d, comment=comment)
示例#23
0
 def add_card(cls, card, icard=0, comment=''):
     noffset = 2 * icard
     sid = integer(card, 1, 'sid')
     Type = string(card, 2, 'Type')
     id = integer(card, 3 + noffset, 'id')
     value = double(card, 4 + noffset, 'value')
     return NSM(sid, Type, id, value, comment=comment)
示例#24
0
    def _read_shock(self, card, istart):
        """
        F(u, v) = Cv * S(u) * sign(v) * |v|^ev
        """
        self.shockType = string_or_blank(card, istart + 1, 'shockType')
        self.shockCVT = double(card, istart + 2, 'shockCVT')
        self.shockCVC = double_or_blank(card, istart + 3, 'shockCVC')
        self.shockExpVT = double_or_blank(card, istart + 4, 'shockExpVT', 1.0)
        self.shockExpVC = double_or_blank(card, istart + 5,
                                          'shockExpVC', self.shockExpVT)

        if self.shockType == 'TABLE':
            pass
            # self.shockIDTS = integer(card, istart + 6, 'shockIDTS')
            # self.shockIDETS = blank(card, istart + 9, 'shockIDETS')
            # self.shockIDECS = blank(card, istart + 10, 'shockIDECS')
            # self.shockIDETSD = blank(card, istart + 11, 'shockIDETSD')
            # self.shockIDECSD = blank(card, istart + 12, 'shockIDECSD')
        elif self.shockType == 'EQUAT':
            self.shockIDTS = blank(card, istart + 6, 'shockIDTS')
            self.shockIDETS = integer(card, istart + 9, 'shockIDETS')
            self.shockIDECS = integer_or_blank(card, istart + 10,
                                               'shockIDECS', self.shockIDETS)
            self.shockIDETSD = integer(card, istart + 11, 'shockIDETSD')
            self.shockIDECSD = integer_or_blank(card, istart + 11,
                                                'shockIDECSD', self.shockIDETSD)

            #def DEquation(self):
                #if isinstance(self.dequation, int):
                    #return self.dequation
                #return self.dequation.equation_id
        else:
            raise RuntimeError('Invalid shockType=%r on card\n%s' %(self.shockType, card))
        istart += 8
        return istart
示例#25
0
 def add_card(cls, card, comment=''):
     sid = integer(card, 1, 'sid')
     f1 = double_or_blank(card, 2, 'f1', 0.0)
     df = double(card, 3, 'df')
     ndf = integer_or_blank(card, 4, 'ndf', 1)
     assert len(card) <= 5, 'len(FREQ card) = %i\ncard=%s' % (len(card), card)
     return FREQ1(sid, f1, df, ndf, comment=comment)
示例#26
0
    def add_card(self, card, comment):
        i = self.i
        self.load_id[i] = integer(card, 1, 'sid')
        self.node_id[i] = integer(card, 2, 'node')
        self.mag[i] = double(card, 4, 'mag')
        n1234 = [
            integer(card, 4, 'g1'),
            integer(card, 5, 'g2'),
            integer(card, 6, 'g3'),
            integer(card, 7, 'g4'),
        ]
        self.grids = n1234
        #self.xyz[i] = xyz

        mag = double(card, 3, 'mag')
        assert len(card) <= 8, 'len(MOMENT2 card) = %i\ncard=%s' % (len(card), card)
        self.i += 1
示例#27
0
文件: darea.py 项目: hurlei/pyNastran
 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 check_double(self, method):
        # float
        method(BDFCard([3.0]), 0, 'field')
        method(BDFCard(['4.0']), 0, 'field')
        method(BDFCard(['5.']), 0, 'field')

        self.assertEqual(1.0, double(BDFCard([1.]), 0, 'field'))
        self.assertEqual(1.0, double(BDFCard(['1.']), 0, 'field'))
        self.assertEqual(-9.31e-4, double(BDFCard(['-9.31-4']), 0, 'field'))

        # float
        val = method(BDFCard([1.]), 0, 'field')
        self.assertEqual(1., val)
        val = method(BDFCard(['1.']), 0, 'field')
        self.assertEqual(1., val)
        val = method(BDFCard(['1-3']), 0, 'field')
        self.assertEqual(1.e-3, val)
示例#29
0
    def add_card(cls, card, comment=''):
        sid = integer(card, 1, 'sid')
        Q0 = double(card, 2, 'Q0')
        cntrlnd = integer_or_blank(card, 3, 'cntrlnd', 0)

        nfields = card.nfields
        eids = fields(integer_or_string, card, 'eid', i=4, j=nfields)
        return QBDY3(sid, Q0, cntrlnd, eids, comment=comment)
示例#30
0
文件: trim.py 项目: hurlei/pyNastran
    def add_card(self, card, comment=""):
        #: Trim set identification number. (Integer > 0)
        self.trim_id = integer(card, 1, "trim_id")

        #: Mach number. (Real > 0.0 and != 1.0)
        self.mach = double(card, 2, "mach")
        assert self.mach >= 0.0, "mach = %r" % self.mach
        assert self.mach != 1.0, "mach = %r" % self.mach

        #: Dynamic pressure. (Real > 0.0)
        self.q = double(card, 3, "q")
        assert self.q > 0.0, "q=%s" % self.q

        #: The label identifying aerodynamic trim variables defined on an
        #: AESTAT or AESURF entry.
        self.labels = []

        #: The magnitude of the aerodynamic extra point degree-of-freedom.
        #: (Real)
        self.uxs = []

        label = string_or_blank(card, 4, "label1")
        if label:
            ux = double(card, 5, "ux1")
            self.uxs.append(ux)
            self.labels.append(label)

        label = string_or_blank(card, 6, "label2")
        if label:
            ux = double(card, 7, "ux1")
            self.uxs.append(ux)
            self.labels.append(label)

        #: Flag to request a rigid trim analysis (Real > 0.0 and < 1.0;
        #: Default = 1.0. A value of 0.0 provides a rigid trim analysis,
        #: not supported
        self.aeqr = double_or_blank(card, 8, "aeqr", 1.0)

        i = 9
        n = 3
        while i < len(card):
            label = string(card, i, "label%i" % n)
            ux = double(card, i + 1, "ux%i" % n)
            self.labels.append(label)
            self.uxs.append(ux)
            i += 2
示例#31
0
    def add_card(cls, card, comment=''):
        """
        Adds a PDAMP5 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')
        b = double(card, 3, 'b')
        assert len(card) == 4, 'len(PDAMP5 card) = %i\ncard=%s' % (len(card),
                                                                   card)
        return PDAMP5(pid, mid, b, comment=comment)
示例#32
0
    def add_card(cls, card, comment=''):
        """
        Adds a CELAS4 card from ``BDF.add_card(...)``

        Parameters
        ----------
        card : BDFCard()
            a BDFCard object
        comment : str; default=''
            a comment for the card
        """
        eid = integer(card, 1, 'eid')
        k = double(card, 2, 'k')
        s1 = integer_or_blank(card, 3, 's1', 0)
        s2 = integer_or_blank(card, 4, 's2', 0)
        assert len(card) <= 5, 'len(CELAS4 card) = %i\ncard=%s' % (len(card), card)
        return CELAS4(eid, k, [s1, s2], comment=comment)
示例#33
0
    def add_card(cls, card, icard=0, comment=''):
        """
        Adds a PMASS card from ``BDF.add_card(...)``

        Parameters
        ----------
        card : BDFCard()
            a BDFCard object
        icard : int; default=0
            the index of the card that's being parsed
        comment : str; default=''
            a comment for the card
        """
        pid = integer(card, 1 + 4 * icard, 'pid')
        ce = double(card, 2 + 4 * icard, 'ce')
        cr = double_or_blank(card, 3 + 4 * icard, 'cr', 0.)
        return PVISC(pid, ce, cr, comment=comment)
示例#34
0
    def add_card(cls, card, comment=''):
        """
        Adds a PCONEAX card from ``BDF.add_card(...)``

        Parameters
        ----------
        card : BDFCard()
            a BDFCard object
        comment : str; default=''
            a comment for the card
        """
        #: Property ID
        pid = integer(card, 1, 'pid')
        #: Material ID
        mid1 = integer_or_blank(card, 2, 'mid1', 0)
        t1 = double_or_blank(card, 3, 't1')

        mid2 = integer_or_blank(card, 4, 'mid2', 0)
        if mid2 > 0:
            i = double(card, 5, 'i')
            assert i > 0.0
        else:
            i = blank(card, 5, 'i')

        mid3 = integer_or_blank(card, 6, 'mid3', 0)
        if mid3 > 0:
            t2 = double(card, 7, 't3')
            assert t2 > 0.0
        else:
            t2 = blank(card, 7, 't3')

        nsm = double(card, 8, 'nsm')
        z1 = double(card, 9, 'z1')
        z2 = double(card, 10, 'z2')

        j = 1
        phi = []
        for icard in range(11, len(card)):
            phii = double(card, icard, 'phi%i' % icard)
            phi.append(phii)
            j += 1
        return PCONEAX(pid,
                       mid1,
                       t1,
                       mid2,
                       i,
                       mid3,
                       t2,
                       nsm,
                       z1,
                       z2,
                       phi,
                       comment=comment)
示例#35
0
文件: loads.py 项目: zbhfut/pyNastran
    def add_card(cls, card, comment=''):
        """
        Adds a QBDY3 card from ``BDF.add_card(...)``

        Parameters
        ----------
        card : BDFCard()
            a BDFCard object
        comment : str; default=''
            a comment for the card
        """
        sid = integer(card, 1, 'sid')
        q0 = double(card, 2, 'q0')
        cntrlnd = integer_or_blank(card, 3, 'cntrlnd', 0)

        nfields = card.nfields
        eids = fields(integer_or_string, card, 'eid', i=4, j=nfields)
        return QBDY3(sid, q0, cntrlnd, eids, comment=comment)
示例#36
0
    def add_card(cls, card, icard=0, comment=''):
        """
        Adds a PDAMP card from ``BDF.add_card(...)``

        Parameters
        ----------
        card : BDFCard()
            a BDFCard object
        icard : int; default=0
            the index of the card that's being parsed
        comment : str; default=''
            a comment for the card
        """
        noffset = icard * 2
        pid = integer(card, 1 + noffset, 'pid')

        b = double(card, 2 + noffset, 'b')
        return PDAMP(pid, b, comment=comment)
示例#37
0
    def add_card(cls, card, comment=''):
        """
        Adds a RADBC card from ``BDF.add_card(...)``

        Parameters
        ----------
        card : BDFCard()
            a BDFCard object
        comment : str; default=''
            a comment for the card
        """
        nodamb = integer(card, 1, 'nodamb')
        famb = double(card, 2, 'famb')
        cntrlnd = integer_or_blank(card, 3, 'cntrlnd', 0)

        nfields = card.nfields
        eids = fields(integer_or_string, card, 'eid', i=4, j=nfields)
        return RADBC(nodamb, famb, cntrlnd, eids, comment=comment)
示例#38
0
    def add_card(cls, card, comment=''):
        """
        Adds a SPCAX card from ``BDF.add_card(...)``

        Parameters
        ----------
        card : BDFCard()
            a BDFCard object
        comment : str; default=''
            a comment for the card

        """
        conid = integer(card, 1, 'conid')
        rid = integer(card, 2, 'rid')
        hid = integer(card, 3, 'hid')
        c = parse_components(card, 4, 'c')
        d = double(card, 5, 'd')
        return SPCAX(conid, rid, hid, c, d, comment=comment)
示例#39
0
    def add_card(self, card, comment=''):
        self.model.log.debug('  adding CONROD')
        i = self.i
        eid = integer(card, 1, 'element_id')
        self.element_id[i] = eid
        self.node_ids[i] = [
            integer(card, 2, 'node_1'),
            integer(card, 3, 'node_2')
        ]

        self.material_id[i] = integer(card, 4, 'material_id')
        self.A[i] = double(card, 5, 'Area')
        self.J[i] = double_or_blank(card, 6, 'J', 0.0)
        self.c[i] = double_or_blank(card, 7, 'c', 0.0)
        self.nsm[i] = double_or_blank(card, 8, 'non_structural_mass', 0.0)
        assert len(card) <= 9, 'len(CONROD card) = %i\ncard=%s' % (len(card),
                                                                   card)
        self.i += 1
示例#40
0
 def add_card(cls, card, comment=''):
     pid = integer(card, 1, 'pid')
     mid = integer(card, 2, 'mid')
     thick = double(card, 3, 'thick')
     iplane = integer(card, 4, 'iplane')
     nsm = double_or_blank(card, 5, 'nsm', 0.)
     gamma = double_or_blank(card, 6, 'gamma', 0.5)
     phi = double_or_blank(card, 7, 'phi', 180.)
     assert len(card) <= 8, 'len(PRAC2D card) = %i\ncard=%s' % (len(card),
                                                                card)
     return PRAC2D(pid,
                   mid,
                   thick,
                   iplane,
                   nsm,
                   gamma,
                   phi,
                   comment=comment)
示例#41
0
    def add_card(cls, card, comment=''):
        """
        Adds a RINGAX card from ``BDF.add_card(...)``

        Parameters
        ----------
        card : BDFCard()
            a BDFCard object
        comment : str; default=''
            a comment for the card

        """
        nid = integer(card, 1, 'nid')
        ringax = integer(card, 2, 'ringax')
        phi = double(card, 3, 'phi')
        assert len(card) <= 4, 'len(POINTAX card) = %i\ncard=%s' % (len(card),
                                                                    card)
        return POINTAX(nid, ringax, phi, comment=comment)
示例#42
0
    def add_card(cls, card, comment=''):
        """
        Adds a FREQ1 card from ``BDF.add_card(...)``

        Parameters
        ----------
        card : BDFCard()
            a BDFCard object
        comment : str; default=''
            a comment for the card
        """
        sid = integer(card, 1, 'sid')
        f1 = double_or_blank(card, 2, 'f1', 0.0)
        df = double(card, 3, 'df')
        ndf = integer_or_blank(card, 4, 'ndf', 1)
        assert len(card) <= 5, 'len(FREQ card) = %i\ncard=%s' % (len(card),
                                                                 card)
        return FREQ1(sid, f1, df, ndf, comment=comment)
示例#43
0
 def add_card(self, card, comment=None):
     i = self.i
     self.element_id[i] = integer(card, 1, 'eid')
     self.K[i] = double(card, 2, 'k')
     self.node_ids[i, :] = [
         integer(card, 3, 'G1'),
         integer_or_blank(card, 5, 'G2', 0)
     ]
     print(integer_or_blank(card, 6, 'C2', 0))
     self.components[i, :] = [
         integer_or_blank(card, 4, 'C1', 0),
         integer_or_blank(card, 6, 'C2', 0)
     ]
     self.ge[i] = double_or_blank(card, 7, 'ge', 0.)
     self.s[i] = double_or_blank(card, 8, 's', 0.)
     assert len(card) <= 9, 'len(CELAS2 card) = %i\ncard=%s' % (
         len(card), card) + str(card)
     self.i += 1
示例#44
0
    def _read_shock(card, istart):
        """
        F(u, v) = Cv * S(u) * sign(v) * |v|^ev
        """
        shock_type = string_or_blank(card, istart + 1, 'shockType')
        shock_cvt = double(card, istart + 2, 'shockCVT')
        shock_cvc = double_or_blank(card, istart + 3, 'shockCVC')
        shock_exp_vt = double_or_blank(card, istart + 4, 'shockExpVT', 1.0)
        shock_exp_vc = double_or_blank(card, istart + 5,
                                       'shockExpVC', shock_exp_vt)

        if shock_type == 'TABLE':
            shock_idts = None
            shock_idets = None
            shock_idecs = None
            shock_idetsd = None
            shock_idecsd = None
            # shock_idts = integer(card, istart + 6, 'shockIDTS')
            # shock_idets = blank(card, istart + 9, 'shockIDETS')
            # shock_idecs = blank(card, istart + 10, 'shockIDECS')
            # shock_idetsd = blank(card, istart + 11, 'shockIDETSD')
            # shock_idecsd = blank(card, istart + 12, 'shockIDECSD')
        elif shock_type == 'EQUAT':
            shock_idts = blank(card, istart + 6, 'shockIDTS')
            shock_idets = integer(card, istart + 9, 'shockIDETS')
            shock_idecs = integer_or_blank(card, istart + 10,
                                           'shockIDECS', shock_idets)
            shock_idetsd = integer(card, istart + 11, 'shockIDETSD')
            shock_idecsd = integer_or_blank(card, istart + 11,
                                            'shockIDECSD', shock_idetsd)
            #def DEquation(self):
                #if isinstance(self.dequation, int):
                    #return self.dequation
                #return self.dequation.equation_id
        else:
            msg = 'Invalid shockType=%r on card\n%s' % (shock_type, card)
            raise RuntimeError(msg)

        out = (
            shock_type, shock_cvt, shock_cvc, shock_exp_vt, shock_exp_vc,
            shock_idts, shock_idets, shock_idecs, shock_idetsd, shock_idecsd
        )
        istart += 8
        return istart, out
示例#45
0
    def build(self):
        cards = self._cards
        ncards = len(cards)
        self.n = ncards
        if ncards:
            float_fmt = self.model.float_fmt
            #: Property ID
            self.load_id = zeros(ncards, 'int32')
            #: Element ID
            self.element_id = zeros(ncards, 'int32')

            # Surface traction at grid point GA. (Real)
            self.p = zeros((ncards, 2), float_fmt)

            #: Corner grid points. GA and GB are any two adjacent corner grid points of the
            #: element. (Integer > 0)
            self.node_ids = zeros((ncards, 2), 'int32')

            #: Angle between surface traction and inward normal to the line segment.
            #: (Real Default = 0.0)
            self.theta = zeros(ncards, float_fmt)

            for i, card in enumerate(cards):
                self.load_id[i] = integer(card, 1, 'load_id')
                self.element_id[i] = integer(card, 2, 'element_id')
                pa = double(card, 3, 'pa')
                pb = double_or_blank(card, 4, 'pb', pa)
                self.p[i, :] = [pa, pb]
                self.node_ids[i, :] = [
                    integer(card, 5, 'ga'),
                    integer(card, 6, 'gb')
                ]
                self.theta[i] = double_or_blank(card, 7, 'theta', 0.)
                assert len(card) <= 8, 'len(PLOADX1 card) = %i\ncard=%s' % (
                    len(card), card)

            i = self.load_id.argsort()
            self.load_id = self.load_id[i]
            self.element_id = self.element_id[i]
            self.node_ids = self.node_ids[i, :]
            self.p = self.p[i, :]
            self.theta = self.theta[i]
            self._cards = []
            self._comments = []
示例#46
0
    def add_card(cls, card, comment=''):
        """
        Adds a CONROD card from ``BDF.add_card(...)``

        Parameters
        ----------
        card : BDFCard()
            a BDFCard object
        comment : str; default=''
            a comment for the card
        """
        eid = integer(card, 1, 'eid')
        nids = [integer(card, 2, 'n1'), integer(card, 3, 'n2')]
        mid = integer(card, 4, 'mid')
        A = double(card, 5, 'A')
        j = double_or_blank(card, 6, 'j', 0.0)
        c = double_or_blank(card, 7, 'c', 0.0)
        nsm = double_or_blank(card, 8, 'nsm', 0.0)
        return CONROD(eid, mid, nids, A, j, c, nsm, comment=comment)
示例#47
0
    def add_card(cls, card, icard=0, comment=''):
        """
        Adds a RINGAX card from ``BDF.add_card(...)``

        Parameters
        ----------
        card : BDFCard()
            a BDFCard object
        comment : str; default=''
            a comment for the card

        """
        ioffset = 2 * icard
        j = icard + 1
        ringfl = integer(card, 1+ioffset, 'ringfl_%i' % j)
        xa = double(card, 2+ioffset, 'xa_%i' % j)
        xb = double_or_blank(card, 3+ioffset, 'xa_%i' % j)
        assert len(card) <= 9, 'len(RINGFL card) = %i\ncard=%s' % (len(card), card)
        return RINGFL(ringfl, xa, xb, comment=comment)
示例#48
0
文件: loads.py 项目: zbhfut/pyNastran
    def add_card(cls, card, icard=0, comment=''):
        """
        Adds a TEMPD card from ``BDF.add_card(...)``

        Parameters
        ----------
        card : BDFCard()
            a BDFCard object
        icard : int; default=0
            sid to be parsed
        comment : str; default=''
            a comment for the card
        """
        nfields = len(card) - 1
        assert nfields % 2 == 0, 'card=%s' % card
        i = 2 * icard
        sid = integer(card, i + 1, 'sid')
        temperature = double(card, i + 2, 'temp')
        return TEMPD(sid, temperature, comment=comment)
示例#49
0
文件: rods.py 项目: zbhfut/pyNastran
    def add_card(cls, card, comment=''):
        """
        Adds a PROD 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')
        A = double(card, 3, 'A')
        j = double_or_blank(card, 4, 'J', 0.0)
        c = double_or_blank(card, 5, 'c', 0.0)
        nsm = double_or_blank(card, 6, 'nsm', 0.0)
        assert len(card) <= 7, 'len(PROD card) = %i\ncard=%s' % (len(card), card)
        return PROD(pid, mid, A, j, c, nsm, comment=comment)
示例#50
0
    def add_card(cls, card, icard=0, comment=''):
        """
        Adds an NSM card from ``BDF.add_card(...)``

        Parameters
        ----------
        card : BDFCard()
            a BDFCard object
        icard : int; default=0
            the index of the card that's being parsed
        comment : str; default=''
            a comment for the card
        """
        noffset = 2 * icard
        sid = integer(card, 1, 'sid')
        nsm_type = string(card, 2, 'Type')
        pid_eid = integer(card, 3 + noffset, 'pid/eid')
        value = double(card, 4 + noffset, 'value')
        return cls(sid, nsm_type, pid_eid, value, comment=comment)
示例#51
0
文件: rods.py 项目: zbhfut/pyNastran
    def add_card(cls, card, comment=''):
        """
        Adds a PTUBE 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')
        OD1 = double(card, 3, 'OD1')
        t = double_or_blank(card, 4, 't', OD1/2.)
        nsm = double_or_blank(card, 5, 'nsm', 0.0)
        OD2 = double_or_blank(card, 6, 'OD2', OD1)
        assert len(card) <= 7, 'len(PTUBE card) = %i\ncard=%s' % (len(card), card)
        return PTUBE(pid, mid, OD1, t, nsm, OD2, comment=comment)
示例#52
0
    def add_card(cls, card, comment=''):
        """
        Adds a CDAMP2 card from ``BDF.add_card(...)``

        Parameters
        ----------
        card : BDFCard()
            a BDFCard object
        comment : str; default=''
            a comment for the card
        """
        eid = integer(card, 1, 'eid')
        b = double(card, 2, 'b')
        nids = [integer_or_blank(card, 3, 'n1', 0),
                integer_or_blank(card, 5, 'n2', 0)]
        c1 = integer_or_blank(card, 4, 'c1', 0)
        c2 = integer_or_blank(card, 6, 'c2', 0)
        assert len(card) <= 7, 'len(CDAMP2 card) = %i\ncard=%s' % (len(card), card)
        return CDAMP2(eid, b, nids, c1, c2, comment=comment)
示例#53
0
    def add_card(cls, card, comment=''):
        """
        Adds a DIVERG card from ``BDF.add_card(...)``

        Parameters
        ----------
        card : BDFCard()
            a BDFCard object
        comment : str; default=''
            a comment for the card
        """
        sid = integer(card, 1, 'sid')
        nroots = integer(card, 2, 'nroot')
        j = 1
        machs = []
        for i in range(3, len(card)):
            mach = double(card, i, 'Mach_%i' % j)
            machs.append(mach)
            j += 1
        return DIVERG(sid, nroots, machs, comment=comment)
示例#54
0
文件: loads.py 项目: zbhfut/pyNastran
    def add_card(cls, card, comment=''):
        """
        Adds a QBDY1 card from ``BDF.add_card(...)``

        Parameters
        ----------
        card : BDFCard()
            a BDFCard object
        comment : str; default=''
            a comment for the card
        """
        sid = integer(card, 1, 'sid')
        qflux = double(card, 2, 'qflux')
        eids = []
        j = 1
        for i in range(3, len(card)):
            eid = integer_or_string(card, i, 'eid%i' % j)
            eids.append(eid)
            j += 1
        return QBDY1(sid, qflux, eids, comment=comment)
示例#55
0
 def add_card(cls, card, comment=''):
     pconid = integer(card, 1, 'pconid')
     mid = integer(card, 2, 'mid')
     form = integer_or_blank(card, 3, 'form', 0)
     flag = integer_or_blank(card, 4, 'flag', 0)
     coef = double(card, 5, 'coef')
     expr = double_or_blank(card, 6, 'expr', 0.0)
     exppi = double_or_blank(card, 7, 'exppi', 0.0)
     exppo = double_or_blank(card, 8, 'exppo', 0.0)
     assert len(card) <= 9, 'len(PCONVM card) = %i\ncard=%s' % (len(card),
                                                                card)
     return PCONVM(pconid,
                   mid,
                   form,
                   flag,
                   coef,
                   expr,
                   exppi,
                   exppo,
                   comment=comment)
示例#56
0
    def add_card(cls, card, comment=''):
        """
        Adds a PRESAX 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, 'pressure')
        rid1 = integer(card, 3, 'rid1')
        rid2 = integer(card, 4, 'rid2')
        phi1 = double_or_blank(card, 5, 'phi1', 0.)
        phi2 = double_or_blank(card, 6, 'phi2', 360.)
        assert len(card) == 7, 'len(PRESAX card) = %i\ncard=%s' % (len(card),
                                                                   card)
        return PRESAX(sid, pressure, rid1, rid2, phi1, phi2, comment=comment)
示例#57
0
    def add_card(cls, card, icard=0, comment=''):
        """
        Adds a PELAS card from ``BDF.add_card(...)``

        Parameters
        ----------
        card : BDFCard()
            a BDFCard object
        icard : int; default=0
            the index of the PELAS card that's being parsed
            must be 0 or 1
        comment : str; default=''
            a comment for the card
        """
        noffset = icard * 4
        pid = integer(card, 1 + noffset, 'pid')
        k = double(card, 2 + noffset, 'k')
        ge = double_or_blank(card, 3 + noffset, 'ge', 0.)
        s = double_or_blank(card, 4 + noffset, 's', 0.)
        return PELAS(pid, k, ge, s, comment=comment)
示例#58
0
    def add_card(cls, card, comment=''):
        """
        Adds a PRAC2D 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')
        thick = double(card, 3, 'thick')
        iplane = integer(card, 4, 'iplane')
        nsm = double_or_blank(card, 5, 'nsm', 0.)
        gamma = double_or_blank(card, 6, 'gamma', 0.5)
        phi = double_or_blank(card, 7, 'phi', 180.)
        assert len(card) <= 8, 'len(PRAC2D card) = %i\ncard=%s' % (len(card), card)
        return PRAC2D(pid, mid, thick, iplane, nsm, gamma, phi,
                      comment=comment)
示例#59
0
    def add_card(cls, card, comment=''):
        tid = integer(card, 1, 'tid')
        x1 = double(card, 2, 'x1')

        nfields = len(card) - 1
        nterms = (nfields - 9) // 2
        if nterms < 0:
            raise SyntaxError('%r card is too short' % cls.type)
        xy = []
        for i in range(nterms):
            n = 9 + i * 2
            if card.field(n) == 'ENDT':
                break
            x = double_or_string(card, n, 'x' + str(i + 1))
            y = double_or_string(card, n + 1, 'y' + str(i + 1))
            if x == 'SKIP' or y == 'SKIP':
                continue
            xy.append([x, y])
        string(card, nfields, 'ENDT')
        x, y = make_xy(tid, 'TABLEM2', xy)
        return TABLEM2(tid, x1, x, y, comment=comment)
示例#60
0
    def add_card(self, card, comment=''):
        """
        Adds a CELAS2 card from ``BDF.add_card(...)``

        Parameters
        ----------
        card : BDFCard()
            a BDFCard object
        comment : str; default=''
            a comment for the card
        """
        eid = integer(card, 1, 'eid')
        k = double(card, 2, 'k')
        nids = [integer_or_blank(card, 3, 'g1', 0),
                integer_or_blank(card, 5, 'g2', 0)]
        c1 = integer_or_blank(card, 4, 'c1', 0)
        c2 = integer_or_blank(card, 6, 'c2', 0)
        ge = double_or_blank(card, 7, 'ge', 0.)
        s = double_or_blank(card, 8, 's', 0.)
        assert len(card) <= 9, 'len(CELAS2 card) = %i\ncard=%s' % (len(card), card)
        self.add(eid, k, nids, [c1, c2], ge, s, comment=comment)