Пример #1
0
    def test_cord3g(self):
        """tests the CORD3G card"""
        cid = 1
        #method_es = 'E313'
        method_es = 'E'
        method_int = 123
        form = 'EQN'
        thetas = [110, 111, 112]
        rid = 0

        cord3g_e = CORD3G(cid, method_es, method_int, form, thetas, rid,
                          comment='cord3g')
        fields = BDFCard(cord3g_e.raw_fields())
        cord3g_e.repr_fields()
        cord3g_e.add_card(fields)
        xyz = [0., 0., 0.]
        cord3g_e.coord3g_transform_to_global(xyz)

        method_es = 'S'
        cord3g_s = CORD3G(cid, method_es, method_int, form, thetas, rid,
                          comment='cord3g')
        fields = BDFCard(cord3g_s.raw_fields())
        cord3g_s.repr_fields()
        cord3g_s.add_card(fields)
        with self.assertRaises(NotImplementedError):  # TODO: add me
            cord3g_s.coord3g_transform_to_global(xyz)
Пример #2
0
    def test_gap_01(self):
        """tests a CGAP/PGAP"""
        log = get_logger(level='warning')
        model = BDF(log=log)
        lines = [
            'CGAP    899     90      21      99      0.      1.      0.      0'
        ]
        card = model._process_card(lines)
        card = BDFCard(card)

        cgap = CGAP.add_card(card, comment='cgap')
        node_ids = cgap.node_ids
        assert node_ids == [21, 99], node_ids
        self.assertEqual(cgap.eid, 899)
        self.assertEqual(cgap.Pid(), 90)
        cgap.write_card(size=8)
        cgap.raw_fields()

        lines = ['PGAP    90                      1.E+5']
        card = model._process_card(lines)
        card = BDFCard(card)

        pgap = PGAP.add_card(card, comment='pgap')
        pgap.write_card(size=8)
        pgap.write_card(size=16)
        self.assertEqual(pgap.Pid(), 90)
        pgap.raw_fields()
Пример #3
0
    def test_cord2c_01(self):
        lines = [
            'CORD2C*                3               0              0.              0.',
            '*                     0.              0.              0.              1.*',
            '*                     1.              0.              1.'
        ]
        model = BDF(debug=False)
        card = model.process_card(lines)
        card = BDFCard(card)
        card = CORD2C(card)
        model.add_coord(card)

        lines = [
            'CORD2R         4       3     10.      0.      5.     10.     90.      5.',
            '             10.      0.      6.'
        ]
        card = model.process_card(lines)
        card = BDFCard(card)
        card = CORD2R(card)
        model.add_coord(card)
        model.cross_reference()

        cord2r = model.Coord(3)
        self.assertEquals(cord2r.Cid(), 3)
        self.assertEquals(cord2r.Rid(), 0)

        cord2r = model.Coord(4)
        self.assertEquals(cord2r.Cid(), 4)
        self.assertEquals(cord2r.Rid(), 3)

        self.assertTrue(allclose(cord2r.i, array([0., 0., 1.])))
        delta = cord2r.j - array([1., 1., 0.]) / 2**0.5
        self.assertTrue(allclose(cord2r.j, array([1., 1., 0.]) / 2**0.5), str(delta))
        delta = cord2r.k - array([-1., 1., 0.]) / 2**0.5
        self.assertTrue(allclose(cord2r.k, array([-1., 1., 0.]) / 2**0.5), str(delta))
Пример #4
0
    def test_dmi_01(self):
        lines = ['DMI,Q,0,6,1,0,,4,4']
        card = bdf.process_card(lines)
        card = BDFCard(card)

        size = 8
        card = DMI(card)
        card.write_card(size, 'dummy')
Пример #5
0
    def test_dmi_01(self):
        lines = ['DMI,Q,0,6,1,0,,4,4']
        card = bdf.process_card(lines)
        card = BDFCard(card)

        size = 8
        card = DMI(card)
        card.write_bdf(size, 'dummy')
Пример #6
0
    def test_set1_01(self):
        lines = ['SET1,    1100,    100,     101']
        card = bdf.process_card(lines)
        card = BDFCard(card)

        size = 8
        card = SET1(card)
        card.write_card(size, 'dummy')
        card.raw_fields()
Пример #7
0
    def test_aestat_01(self):
        lines = ['AESTAT  502     PITCH']
        card = bdf.process_card(lines)
        card = BDFCard(card)

        size = 8
        card = AESTAT.add_card(card)
        card.write_card(size, 'dummy')
        card.raw_fields()
Пример #8
0
    def test_dmig_06(self):
        lines = ['DMIG    ENFORCE 0       1       1       0']
        model = BDF(debug=False)
        card = model.process_card(lines)
        card = BDFCard(card)

        size = 8
        card = DMIG(card)
        card.write_card(size, 'dummy')
Пример #9
0
    def test_support1_01(self):
        lines = ['SUPORT1, 1,      126']
        card = bdf.process_card(lines)
        card = BDFCard(card)

        size = 8
        card = SUPORT1(card)
        card.write_bdf(size, 'dummy')
        card.rawFields()
Пример #10
0
    def test_pload4_02(self):
        lines = ['PLOAD4  1       101     1.                              10000   10011']
        card = bdf.process_card(lines)
        card = BDFCard(card)

        size = 8
        card = PLOAD4(card)
        card.write_card(size, 'dummy')
        card.raw_fields()
Пример #11
0
    def test_dmig_06(self):
        lines = ['DMIG    ENFORCE 0       1       1       0']
        bdf = BDF(debug=False)
        card = bdf.process_card(lines)
        card = BDFCard(card)

        size = 8
        card = DMIG(card)
        card.write_bdf(size, 'dummy')
Пример #12
0
    def test_cpenta_01(self):
        lines = ['CPENTA,85,22,201,202,203,205,206,207,+PN2',
                 '+PN2,209,210,217,  ,  ,  ,213,214,218']
        card = bdf.process_card(lines)
        card = BDFCard(card)

        size = 8
        card = CPENTA15(card)
        card.write_bdf(size, 'dummy')
        card.raw_fields()
Пример #13
0
    def test_cdamp1_01(self):
        lines = ['CDAMP1, 2001, 20, 1001, 1']
        card = bdf.process_card(lines)
        card = BDFCard(card)

        size = 8
        card = CDAMP1(card)
        self.assertEquals(card.Eid(), 2001)
        self.assertEquals(card.Pid(), 20)
        card.write_bdf(size, 'dummy')
        card.rawFields()
Пример #14
0
    def test_cord1c_01(self):
        lines = ["cord1c,2,1,4,3"]
        card = bdf.process_card(lines)
        card = BDFCard(card)

        size = 8
        card = CORD1C(card)
        self.assertEqual(card.Cid(), 2)
        self.assertEqual(card.Rid(), 0)
        card.write_card(size, "dummy")
        card.raw_fields()
Пример #15
0
    def test_cpenta_01(self):
        lines = ["CPENTA,85,22,201,202,203,205,206,207,+PN2", "+PN2,209,210,217,  ,  ,  ,213,214,", ",218"]
        card = bdf.process_card(lines)
        card = BDFCard(card)

        size = 8
        card = CPENTA15.add_card(card)
        card.write_card(size, "dummy")
        node_ids = card.node_ids
        assert node_ids == [201, 202, 203, 205, 206, 207, 209, 210, 217, None, None, None, 213, 214, 218], node_ids
        card.raw_fields()
Пример #16
0
    def test_cord1s_01(self):
        lines = ['cord1s,2,1,4,3']
        card = bdf.process_card(lines)
        card = BDFCard(card)

        size = 8
        card = CORD1S(card)
        self.assertEqual(card.Cid(), 2)
        self.assertEqual(card.Rid(), 0)
        card.write_card(size, 'dummy')
        card.raw_fields()
Пример #17
0
    def test_set1_01(self):
        lines = ['SET1,    1100,    100,     101']
        card = bdf.process_card(lines)
        card = BDFCard(card)

        size = 8
        card = SET1.add_card(card)
        card.write_card(size, 'dummy')
        card.raw_fields()

        card2 = SET1(1100, [100, 101], is_skin=False, comment='')
        card2.write_card(size, 'dummy')
Пример #18
0
    def test_cdamp1_01(self):
        lines = ['CDAMP1, 2001, 20, 1001, 1']
        card = bdf.process_card(lines)
        card = BDFCard(card)

        size = 8
        card = CDAMP1(card)
        self.assertEqual(card.Eid(), 2001)
        self.assertEqual(card.Pid(), 20)
        node_ids = card.node_ids
        assert node_ids == [1001, None], node_ids
        card.write_card(size, 'dummy')
        card.raw_fields()
Пример #19
0
    def test_caero3_1(self):
        """checks the CAERO3/PAERO3"""
        eid = 100
        pid = 200
        cp = 4
        list_w = 5
        list_c1 = 6
        list_c2 = 7
        p1 = [0., 0., 0.]
        x12 = 10.
        p4 = [5., 10., 0.]
        x43 = 3.

        nbox = 10
        ncontrol_surfaces = 0
        x = None
        y = None

        log = SimpleLogger(level='warning')
        model = BDF(log=log)
        coord = CORD2R.add_card(BDFCard(['CORD2R', cp, 0,
                                         0., 0., 0.,
                                         0., 0., 1.,
                                         1., 0., 0.]))
        coord = CORD2R(cp, rid=0, origin=None, zaxis=None, xzplane=None,
                       comment='')
        coord.validate()
        model.coords[cp] = coord

        paero = PAERO3(pid, nbox, ncontrol_surfaces, x, y)
        model.paeros[pid] = paero

        card = ['CAERO3', 2000, 20001, 0, 22, 33, None, None, None,
                1.0, 0.0, 0., 100., 17., 130., 0., 100.]
        bdf_card = BDFCard(card, has_none=True)
        caero3a = CAERO3.add_card(bdf_card, comment='msg')
        caero3a.validate()
        caero3a.write_card()
        caero3a.raw_fields()

        caero3b = CAERO3(eid, pid, cp, list_w, list_c1, list_c2, p1, x12, p4,
                         x43, comment='caero3')
        model.caeros[pid] = caero3b

        caero3b.write_card()
        caero3b.cross_reference(model)
        caero3b.write_card()
        caero3a.raw_fields()
        caero3b.uncross_reference()
        caero3b.write_card()
        caero3a.raw_fields()
Пример #20
0
    def test_pelas_01(self):
        lines = ['pelas, 201, 1.e+5']
        card = bdf.process_card(lines)
        card = BDFCard(card)

        size = 8
        card = PELAS(card)
        card.write_bdf(size, 'dummy')
        card.rawFields()
        self.assertEquals(card.Pid(), 201)
        self.assertEquals(card.K(), 1e5)
Пример #21
0
    def test_cbush_01(self):
        lines = ['cbush,101,102,1,,,,,0']
        card = bdf.process_card(lines)
        card = BDFCard(card)

        size = 8
        card = CBUSH(card)
        self.assertEquals(card.Eid(), 101)
        self.assertEquals(card.Pid(), 102)
        card.write_bdf(size, 'dummy')
        card.raw_fields()
Пример #22
0
    def test_crod_01(self):
        lines = ['CROD          10     100      10       2']
        card = bdf.process_card(lines)
        card = BDFCard(card)

        size = 8
        card = CROD(card)
        card.write_bdf(size, 'dummy')
        card.rawFields()
        self.assertEquals(card.Eid(), 10)
        self.assertEquals(card.Pid(), 100)
Пример #23
0
    def test_gap_01(self):
        """tests a CGAP/PGAP"""
        log = get_logger(level='warning')
        model = BDF(log=log)
        lines = [
            'CGAP    899     90      21      99      0.      1.      0.      0'
        ]
        card = model._process_card(lines)
        card = BDFCard(card)

        cgap = CGAP.add_card(card, comment='cgap')
        node_ids = cgap.node_ids
        assert node_ids == [21, 99], node_ids
        self.assertEqual(cgap.eid, 899)
        self.assertEqual(cgap.Pid(), 90)
        cgap.write_card(size=8)
        cgap.raw_fields()
        model.elements[899] = cgap

        lines = ['PGAP    90                      1.E+5']
        card = model._process_card(lines)
        card = BDFCard(card)

        pgap = PGAP.add_card(card, comment='pgap')
        pgap.write_card(size=8)
        pgap.write_card(size=16)
        self.assertEqual(pgap.Pid(), 90)
        pgap.raw_fields()
        model.properties[90] = pgap

        model.add_grid(3, [-1., 0., 0.])
        model.add_grid(21, [0., 0., 0.])
        model.add_grid(99, [1., 0., 0.])
        eid = 100
        pid = 90
        nids = [21, 99]
        x = None
        g0 = 3
        cid = None
        cgap = model.add_cgap(eid, pid, nids, x, g0, cid, comment='cgap')
        node_ids = cgap.node_ids
        assert node_ids == [21, 99], node_ids
        self.assertEqual(cgap.eid, 100)
        self.assertEqual(cgap.Pid(), 90)
        cgap.write_card(size=8)
        cgap.raw_fields()

        model.cross_reference()
        save_load_deck(model)
Пример #24
0
    def test_rbe2_02(self):
        lines = [
            'RBE2      100045  166007  123456  117752  101899  117766  101898 117748',
            '+         117765  117764  117763  109821  117743  117744  117750 117751',
            '+         117745  117746  101902    ',
        ]
        card = bdf._process_card(lines)
        card = BDFCard(card)
        rbe = RBE2.add_card(card)
        fields = rbe.raw_fields()
        msg = print_card_8(fields).rstrip()
        lines_expected = [
            'RBE2      100045  166007  123456  117752  101899  117766  101898  117748',
            '          117765  117764  117763  109821  117743  117744  117750  117751',
            '          117745  117746  101902      0.'
        ]
        lines_actual = msg.rstrip().split('\n')
        msg = '\n%s\n\n%s\n' % ('\n'.join(lines_expected), msg)
        msg += 'nlines_actual=%i nlines_expected=%i' % (len(lines_actual),
                                                        len(lines_expected))
        self.assertEqual(len(lines_actual), len(lines_expected), msg)
        for actual, expected in zip(lines_actual, lines_expected):
            self.assertEqual(actual, expected, msg)

        dependent_nid_to_components = check_rbe(rbe)
        expected = {
            117763: '123456',
            117764: '123456',
            117765: '123456',
            117766: '123456',
            101898: '123456',
            101899: '123456',
            101902: '123456',
            117743: '123456',
            117744: '123456',
            117745: '123456',
            117746: '123456',
            117748: '123456',
            117750: '123456',
            117751: '123456',
            117752: '123456',
            109821: '123456'
        }
        assert dependent_nid_to_components == expected, dependent_nid_to_components

        model = BDF(debug=None, log=None, mode='msc')
        eid = rbe.eid
        gn = rbe.gn
        cm = rbe.cm
        Gmi = rbe.Gmi
        alpha = rbe.alpha
        model.add_rbe2(eid, gn, cm, Gmi, alpha=alpha, comment='rbe2')
        nids = [
            117752, 101899, 117766, 101898, 117748, 117765, 117764, 117763,
            109821, 117743, 117744, 117750, 117751, 117745, 117746, 101902,
            166007
        ]
        for nid in nids:
            model.add_grid(nid, [0., 0., 0.])
        save_load_deck(model)
Пример #25
0
    def test_cord1s_01(self):
        lines = ['cord1s,2,1,4,3']
        model = BDF(debug=False)
        card = model._process_card(lines)
        cardi = BDFCard(card)

        size = 8
        card = CORD1S.add_card(cardi)
        self.assertEqual(card.Cid(), 2)
        self.assertEqual(card.Rid(), 0)
        card.write_card(size, 'dummy')
        card.raw_fields()

        model = BDF(debug=False)
        model.set_error_storage(nparse_errors=0, stop_on_parsing_error=True,
                                nxref_errors=0, stop_on_xref_error=True)

        cid = 2
        grid1, grid2, grid3 = 1, 4, 3
        coord = model.add_cord1s(cid, grid1, grid2, grid3, comment='cord1c')
        coord.comment = ''
        assert coord == card, 'card:\n%r\ncoord:\n%r' % (str(coord), str(card))

        make_tri(model)
        coord.cross_reference(model)
        model2 = deepcopy(model)
        model2.cross_reference()
        save_load_deck(model2, run_renumber=False)
        unused_cord2s = coord.to_cord2x(model, rid=0)

        model.pop_parse_errors()
        model.pop_xref_errors()
        model.coords[cid] = coord
        model.cross_reference()
        save_load_deck(model, run_renumber=False)
Пример #26
0
    def test_pbeam_06(self):
        """tests a nasty PBEAM"""
        bdf = BDF(debug=False)
        lines = [
            'PBEAM   1       1       1.      60.     1.                              PBEAM1',
            '+BEAM1  5.              -5.                                             PBEAM2',
            '+BEAM2  YES     1.      2.      240.                                    PBEAM3',
            '+BEAM3  10.             -10.                                            PBEAM4',
            '+BEAM4                  -.666667',
        ]

        card = bdf.process_card(lines)
        cardi = BDFCard(card)
        card2 = PBEAM.add_card(cardi)
        fields = card2.raw_fields()

        lines_expected = [
            'PBEAM          1       1      1.     60.      1.      0.      0.      0.',
            '              5.      0.     -5.      0.      0.      0.      0.      0.',
            '             YES      1.      2.    240.      1.      0.      0.      0.',
            '             10.      0.    -10.      0.      0.      0.      0.      0.',
            '              1.      1.-.666667      0.      0.      0.      0.      0.',
            '              0.      0.      0.      0.      0.      0.      0.      0.',
        ]
        self._compare(fields, lines_expected)
Пример #27
0
    def test_aeros_1(self):
        """checks the AEROS card"""
        #acsid = 0.
        #velocity = None
        cref = 1.0
        bref = 2.0
        sref = 100.
        acsid = 0
        rcsid = 0
        aeros = AEROS.add_card(BDFCard(['AERO', acsid, rcsid, cref, bref, sref]))
        aeros = AEROS(cref, bref, sref, acsid, rcsid, sym_xz=0, sym_xy=0,
                      comment='aeros card')
        aeros.validate()
        aeros.write_card()
        aeros.raw_fields()

        acsid = None
        rcsid = None
        sym_xz = None
        sym_xy = None
        aeros = AEROS(cref, bref, sref, acsid, rcsid, sym_xz=sym_xz, sym_xy=sym_xy,
                      comment='aeros card')
        aeros.validate()
        aeros.write_card()
        aeros.raw_fields()
Пример #28
0
 def test_rbe3_01(self):
     lines = [
         'rbe3,6, ,3,123456,1.0,123456,41,4,+rbe3',
         '+rbe3,alpha,2.0e-4',
     ]
     card = bdf._process_card(lines)
     card = BDFCard(card)
     rbe = RBE3.add_card(card)
     fields = rbe.raw_fields()
     msg = print_card_8(fields).rstrip()
     lines_expected = [
         'RBE3           6               3  123456      1.  123456      41       4',
         '           ALPHA   .0002'
     ]
     lines_actual = msg.rstrip().split('\n')
     msg = '\n%s\n\n%s\n' % ('\n'.join(lines_expected), msg)
     msg += 'nlines_actual=%i nlines_expected=%i' % (len(lines_actual),
                                                     len(lines_expected))
     self.assertEqual(len(lines_actual), len(lines_expected), msg)
     for actual, expected in zip(lines_actual, lines_expected):
         self.assertEqual(actual, expected, msg)
     dependent_nid_to_components = check_rbe(rbe)
     #print('dependent_nid_to_components = ', dependent_nid_to_components)
     assert dependent_nid_to_components == {
         3: '123456'
     }, dependent_nid_to_components
Пример #29
0
    def test_mat1_01(self):
        """tests MAT1 initialization from a BDFCard"""
        #
        #MAT5           1    700.    300.    900.    400.    200.    600.     90.+
        #+             .1
        mid = 1
        E = 2e7
        G = 3e7
        nu = 0.4
        rho = 1e-50
        fields = ['MAT1', mid, E, G, nu, rho]

        card = BDFCard(fields)

        mat1 = MAT1.add_card(card)
        self.assertEqual(mid, mat1.Mid())
        self.assertEqual(E, mat1.E())
        self.assertEqual(G, mat1.G())
        self.assertEqual(nu, mat1.Nu())
        self.assertEqual(rho, mat1.Rho())

        size = 8
        msg = mat1.write_card(size, 'dummy')
        self.assertEqual(msg,
                         'MAT1           1    2.+7    3.+7      .4   1.-50\n')

        size = 16
        expected = 'MAT1*                  1       20000000.       30000000.              .4\n*                  1.-50\n'
        actual = mat1.write_card(size, is_double=False)
        msg = 'actual=\n%s\nexpected=\n%s' % (actual, expected)
        self.assertEqual(actual, expected, msg)
Пример #30
0
    def test_pbeam_02(self):
        lines = [
            'PBEAM,39,6,2.9,3.5,5.97',
            '     ,  , ,2.0,-4.0',
            '     ,YES,1.0,5.3,56.2,78.6',
            '     ,   ,   ,2.5,-5.0',
            '     ,YES,1.0,5.3,56.2,78.6',
            '     ,   ,   ,2.5,-5.0',
            '     ,YES,1.0,5.3,56.2,78.6',
            '     ,   ,   ,2.5,-5.0',
            '     ,   ,   ,1.1,    ,2.1,,0.21',
            '     ,   ,   ,   ,    ,0.5,,0.0',
        ]

        card = bdf.process_card(lines)
        card = BDFCard(card)
        card2 = PBEAM(card)
        fields = card2.raw_fields()

        lines_expected = [
            'PBEAM         39       6     2.9     3.5    5.97      0.      0.      0.',
            '              0.      0.      2.     -4.      0.      0.      0.      0.',
            '             YES      1.     5.3    56.2    78.6      0.      0.      0.',
            '              0.      0.     2.5     -5.      0.      0.      0.      0.',
            '             YES      1.     5.3    56.2    78.6      0.      0.      0.',
            '              0.      0.     2.5     -5.      0.      0.      0.      0.',
            '             YES      1.     5.3    56.2    78.6      0.      0.      0.',
            '              0.      0.     2.5     -5.      0.      0.      0.      0.',
            '              1.      1.     1.1      0.     2.1     2.1     .21     .21',
            '              0.      0.      0.      0.      .5      .5      0.      0.'
        ]
        self._compare(fields, lines_expected)
Пример #31
0
    def test_mat11_01(self):
        """tests MAT11"""
        lines = [
            'MAT11          1    1.+75000000. 700000.      .1     .13     .267000000.+',
            '+       9000000.3000000.      .1    1.-5    7.-6    8.-6     50.',
        ]
        lines_expected = [
            'MAT11          1    1.+75000000. 700000.      .1     .13     .267000000.',
            '        9000000.3000000.      .1  .00001 .000007 .000008     50.'
        ]
        model = BDF(debug=False)
        card = model.process_card(lines)
        cardi = BDFCard(card)
        card2 = MAT11.add_card(cardi)

        fields = card2.raw_fields()
        msg = print_card_8(fields)
        #f = StringIO.StringIO()
        size = 8
        msg = card2.write_card(size, 'dummy')
        #msg = f.getvalue()
        #print(msg)

        lines_actual = msg.rstrip().split('\n')
        msg = '\n%s\n\n%s' % ('\n'.join(lines_expected), msg)
        msg += 'nlines_actual=%i nlines_expected=%i' % (len(lines_actual),
                                                        len(lines_expected))
        #print(msg)
        self.assertEqual(len(lines_actual), len(lines_expected), msg)
        for actual, expected in zip(lines_actual, lines_expected):
            msg = '\nactual   = %r\n' % actual
            msg += 'expected =  %r' % expected
            self.assertEqual(actual, expected, msg)
Пример #32
0
    def test_rbe1_01(self):
        lines = [
            'RBE1    10201   10201   123     10202   456',
            '           UM   10201   456     10202   123',
        ]

        card = bdf._process_card(lines)
        #print(print_card_8(card))
        card = BDFCard(card)
        rbe = RBE1.add_card(card)
        fields = rbe.raw_fields()
        msg = print_card_8(fields).rstrip()

        lines_expected = [
            'RBE1       10201   10201     123   10202     456',
            '              UM   10201     456   10202     123'
        ]
        lines_actual = msg.rstrip().split('\n')
        msg = '\n%s\n\n%s\n' % ('\n'.join(lines_expected), msg)
        msg += 'nlines_actual=%i nlines_expected=%i' % (len(lines_actual),
                                                        len(lines_expected))
        self.assertEqual(len(lines_actual), len(lines_expected), msg)
        for actual, expected in zip(lines_actual, lines_expected):
            self.assertEqual(actual, expected, msg)

        dependent_nid_to_components = check_rbe(rbe)
        assert dependent_nid_to_components == {
            10201: '456',
            10202: '123'
        }, dependent_nid_to_components
Пример #33
0
    def test_rbe1_03(self):
        lines = [
            'rbe1,46,3,123456, , , , , ,+rbe46',
            '+rbe46,UM,4,123456,5,123456,2.0-6'
        ]
        card = bdf._process_card(lines)
        card = BDFCard(card)
        rbe = RBE1.add_card(card)
        fields = rbe.raw_fields()
        msg = print_card_8(fields).rstrip()

        lines_expected = [
            'RBE1          46       3  123456',
            '              UM       4  123456       5  123456 .000002'
        ]
        lines_actual = msg.rstrip().split('\n')
        msg = '\n%s\n\n%s\n' % ('\n'.join(lines_expected), msg)
        msg += 'nlines_actual=%i nlines_expected=%i' % (len(lines_actual),
                                                        len(lines_expected))
        self.assertEqual(len(lines_actual), len(lines_expected), msg)
        for actual, expected in zip(lines_actual, lines_expected):
            self.assertEqual(actual, expected, msg)

        dependent_nid_to_components = check_rbe(rbe)
        assert dependent_nid_to_components == {
            4: '123456',
            5: '123456'
        }, dependent_nid_to_components
Пример #34
0
    def test_pbeam_01(self):
        """tests a nasty PBEAM"""
        lines = [
            'PBEAM,39,6,2.9,3.5,5.97',
            '     ,  , ,2.0,-4.0',
            '     ,YES,1.0,5.3,56.2,78.6',
            '     ,   ,   ,2.5,-5.0',
            '     ,   ,   ,1.1,    ,2.1,,0.21',
            '     ,   ,   ,   ,    ,0.5,,0.0',
        ]
        bdf = BDF(debug=False)
        card = bdf.process_card(lines)
        #print(print_card_8(card))
        cardi = BDFCard(card)
        card2 = PBEAM.add_card(cardi)
        fields = card2.raw_fields()

        lines_expected = [
            'PBEAM         39       6     2.9     3.5    5.97      0.      0.      0.',
            '              0.      0.      2.     -4.      0.      0.      0.      0.',
            '             YES      1.     5.3    56.2    78.6      0.      0.      0.',
            '              0.      0.     2.5     -5.      0.      0.      0.      0.',
            '              1.      1.     1.1      0.     2.1     2.1     .21     .21',
            '              0.      0.      0.      0.      .5      .5      0.      0.'
        ]
        self._compare(fields, lines_expected)
Пример #35
0
    def test_cord1s_01(self):
        lines = ['cord1s,2,1,4,3']
        model = BDF(debug=False)
        card = model._process_card(lines)
        cardi = BDFCard(card)

        size = 8
        card = CORD1S.add_card(cardi)
        self.assertEqual(card.Cid(), 2)
        self.assertEqual(card.Rid(), 0)
        card.write_card(size, 'dummy')
        card.raw_fields()

        model = BDF(debug=False)
        cid = 2
        grid1, grid2, grid3 = 1, 4, 3
        coord = model.add_cord1s(cid, grid1, grid2, grid3, comment='cord1c')
        coord.comment = ''
        assert coord == card, 'card:\n%r\ncoord:\n%r' % (str(coord), str(card))

        model.add_grid(1, [0., 0., 0.])
        model.add_grid(3, [0., 0., 1.])
        model.add_grid(4, [1., 0., 1.])
        coord.cross_reference(model)
        unused_cord2s = coord.to_cord2x(model, rid=0)
Пример #36
0
 def test_rbe2_02(self):
     lines = [
         'RBE2      100045  166007  123456  117752  101899  117766  101898 117748',
         '+         117765  117764  117763  109821  117743  117744  117750 117751',
         '+         117745  117746  101902    ',
     ]
     card = bdf.process_card(lines)
     card = BDFCard(card)
     #print(card)
     card2 = RBE2(card)
     fields = card2.raw_fields()
     msg = print_card(fields).rstrip()
     #print(msg)
     lines_expected = [
         'RBE2      100045  166007  123456  117752  101899  117766  101898  117748',
         '          117765  117764  117763  109821  117743  117744  117750  117751',
         '          117745  117746  101902      0.'
     ]
     lines_actual = msg.rstrip().split('\n')
     msg = '\n%s\n\n%s\n' % ('\n'.join(lines_expected), msg)
     msg += 'nlines_actual=%i nlines_expected=%i' % (len(lines_actual),
                                                     len(lines_expected))
     self.assertEqual(len(lines_actual), len(lines_expected), msg)
     for actual, expected in zip(lines_actual, lines_expected):
         self.assertEqual(actual, expected, msg)
Пример #37
0
    def test_rbe1_01(self):
        lines = [
            'RBE1    10201   10201   123     10202   456',
            '           UM   10201   456     10202   123',
        ]

        card = bdf.process_card(lines)
        #print(print_card(card))
        card = BDFCard(card)
        #print(card)
        card2 = RBE1(card)
        fields = card2.raw_fields()
        msg = print_card(fields).rstrip()
        #print(msg)

        lines_expected = [
            'RBE1       10201   10201     123   10202     456',
            '              UM   10201     456   10202     123'
        ]

        lines_actual = msg.rstrip().split('\n')
        msg = '\n%s\n\n%s\n' % ('\n'.join(lines_expected), msg)
        msg += 'nlines_actual=%i nlines_expected=%i' % (len(lines_actual),
                                                        len(lines_expected))
        self.assertEqual(len(lines_actual), len(lines_expected), msg)
        for actual, expected in zip(lines_actual, lines_expected):
            self.assertEqual(actual, expected, msg)
Пример #38
0
    def test_cbush_01(self):
        """tests a CBUSH"""
        log = get_logger(level='warning')
        model = BDF(log=log)
        lines = ['cbush,101,102,1,,,,,0']
        card = model._process_card(lines)
        card = BDFCard(card)

        size = 8
        elem = CBUSH.add_card(card)
        self.assertEqual(elem.eid, 101)
        self.assertEqual(elem.Pid(), 102)
        elem.write_card(size, 'dummy')
        elem.raw_fields()

        pid = 101
        k_tables = [201]
        b_tables = [202]
        ge_tables = [203]
        kn_tables = [204]
        model.add_pbusht(pid,
                         k_tables,
                         b_tables,
                         ge_tables,
                         kn_tables,
                         comment='pbusht')
        save_load_deck(model)
Пример #39
0
    def test_rbe1_03(self):
        lines = [
            'rbe1,46,3,123456, , , , , ,+rbe46',
            '+rbe46,UM,4,123456,5,123456,2.0-6'
        ]
        card = bdf.process_card(lines)
        #print(print_card(card))
        card = BDFCard(card)
        #print(card)
        card2 = RBE1(card)
        fields = card2.raw_fields()
        msg = print_card(fields).rstrip()
        #print(msg)

        lines_expected = [
            'RBE1          46       3  123456',
            '              UM       4  123456       5  123456 .000002'
        ]

        lines_actual = msg.rstrip().split('\n')
        msg = '\n%s\n\n%s\n' % ('\n'.join(lines_expected), msg)
        msg += 'nlines_actual=%i nlines_expected=%i' % (len(lines_actual),
                                                        len(lines_expected))
        self.assertEqual(len(lines_actual), len(lines_expected), msg)
        for actual, expected in zip(lines_actual, lines_expected):
            self.assertEqual(actual, expected, msg)
Пример #40
0
    def test_cpenta_01(self):
        lines = [
            'CPENTA,85,22,201,202,203,205,206,207,+PN2',
            '+PN2,209,210,217,  ,  ,  ,213,214,',
            ',218'
        ]
        card = bdf.process_card(lines)
        card = BDFCard(card)

        size = 8
        card = CPENTA15(card)
        card.write_card(size, 'dummy')
        node_ids = card.node_ids
        assert node_ids == [201, 202, 203, 205, 206, 207,
                            209, 210, 217, None, None, None, 213, 214, 218], node_ids
        card.raw_fields()
Пример #41
0
    def test_mat11_01(self):
        lines = [  # fails
            'MAT11          1    1.+75000000. 700000.      .1     .13     .267000000.+',
            '+       9000000.3000000.      .1    1.-5    7.-6    8.-6     50.',
        ]
        lines_expected = [
            'MAT11          1    1.+75000000. 700000.      .1     .137000000.9000000.',
            '        3000000.      .1  .00001 .000007 .000008     50.'
        ]
        card = bdf.process_card(lines)
        card = BDFCard(card)
        card2 = MAT11(card)

        fields = card2.raw_fields()
        msg = print_card(fields)
        #f = StringIO.StringIO()
        size = 8
        msg = card2.write_bdf(size, 'dummy')
        #msg = f.getvalue()
        #print(msg)

        lines_actual = msg.rstrip().split('\n')
        msg = '\n%s\n\n%s' % ('\n'.join(lines_expected), msg)
        msg += 'nlines_actual=%i nlines_expected=%i' % (len(lines_actual),
                                                        len(lines_expected))
        #print(msg)
        self.assertEqual(len(lines_actual), len(lines_expected), msg)
        for actual, expected in zip(lines_actual, lines_expected):
            msg = 'actual   = %r\n' % actual
            msg += 'expected = %r' % expected
            self.assertEqual(actual, expected, msg)
Пример #42
0
    def test_mat1_01(self):
        #
        #MAT5           1    700.    300.    900.    400.    200.    600.     90.+
        #+             .1
        mid = 1
        E = 2e7
        G = 3e7
        nu = 0.4
        rho = 1e-50
        fields = ['MAT1', mid, E, G, nu, rho]

        card = BDFCard(fields)

        mat1 = MAT1(card)
        self.assertEquals(mid, mat1.Mid())
        self.assertEquals(E, mat1.E())
        self.assertEquals(G, mat1.G())
        self.assertEquals(nu, mat1.Nu())
        self.assertEquals(rho, mat1.Rho())

        size = 8
        msg = mat1.write_bdf(size, 'dummy')
        self.assertEquals(
            msg, 'MAT1           1    2.+7    3.+7      .4   1.-50\n')

        size = 16
        msg = mat1.write_bdf(size, 'dummy')
        self.assertEquals(
            msg,
            'MAT1*                  1       20000000.       30000000.              .4\n*                  1.-50\n'
        )
Пример #43
0
    def test_rbe1_02(self):
        lines = [
            'RBE1        1001    1000  123456',
            '              UM    1002     123    1003     123    1004     123',
            '                    1005     123    1006     123    1008     123',
            '                    1009     123    1010     123    1011     123',
            '                    1012     123',
        ]
        card = bdf.process_card(lines)
        #print(print_card_8(card))
        card = BDFCard(card)
        rbe = RBE1.add_card(card)
        fields = rbe.raw_fields()
        msg = print_card_8(fields).rstrip()

        lines_expected = [
            'RBE1        1001    1000  123456',
            '              UM    1002     123    1003     123    1004     123',
            '                    1005     123    1006     123    1008     123',
            '                    1009     123    1010     123    1011     123',
            '                    1012     123',
        ]

        lines_actual = msg.rstrip().split('\n')
        msg = '\n%s\n\n%s\n' % ('\n'.join(lines_expected), msg)
        msg += 'nlines_actual=%i nlines_expected=%i' % (len(lines_actual),
                                                        len(lines_expected))
        self.assertEqual(len(lines_actual), len(lines_expected), msg)
        for actual, expected in zip(lines_actual, lines_expected):
            self.assertEqual(actual, expected, msg)
Пример #44
0
    def test_cpenta_01(self):
        """tests a cpenta15"""
        lines = [
            'CPENTA,85,22,201,202,203,205,206,207,+PN2',
            '+PN2,209,210,217,  ,  ,  ,213,214,', ',218'
        ]
        bdf = BDF(debug=False)
        card = bdf.process_card(lines)
        card = BDFCard(card)

        solid = CPENTA15.add_card(card, comment='cpenta15')
        solid.write_card(size=8, is_double=False)
        solid.write_card(size=16, is_double=False)
        solid.raw_fields()

        node_ids = solid.node_ids
        assert node_ids == [
            201, 202, 203, 205, 206, 207, 209, 210, 217, None, None, None, 213,
            214, 218
        ], node_ids
        nids = [
            201, 202, 203, 205, 206, 207, 209, 210, 217, None, None, None, 213,
            214, 218
        ]
        CPENTA15.add_card(card, comment='spike')
        eid = 85
        pid = 22
        bdf.add_cpenta(eid, pid, nids, comment='spike')
Пример #45
0
    def test_pgap_01(self):
        lines = ['PGAP    90                      1.E+5']
        card = bdf.process_card(lines)
        card = BDFCard(card)

        size = 8
        card = PGAP(card)
        card.write_card(size, 'dummy')
        self.assertEqual(card.Pid(), 90)
        card.raw_fields()
Пример #46
0
    def test_crod_01(self):
        lines = ['CROD          10     100      10       2']
        card = bdf.process_card(lines)
        card = BDFCard(card)

        size = 8
        card = CROD(card)
        card.write_bdf(size, 'dummy')
        card.raw_fields()
        self.assertEquals(card.Eid(), 10)
        self.assertEquals(card.Pid(), 100)
Пример #47
0
    def test_pelas_01(self):
        lines = ['pelas, 201, 1.e+5']
        card = bdf.process_card(lines)
        card = BDFCard(card)

        size = 8
        card = PELAS(card)
        card.write_card(size, 'dummy')
        card.raw_fields()
        self.assertEqual(card.Pid(), 201)
        self.assertEqual(card.K(), 1e5)
Пример #48
0
    def test_cgap_01(self):
        lines = ['CGAP    899     90      21      99      0.      1.      0.      0']
        card = bdf.process_card(lines)
        card = BDFCard(card)

        size = 8
        card = CGAP(card)
        self.assertEquals(card.Eid(), 899)
        self.assertEquals(card.Pid(), 90)
        card.write_bdf(size, 'dummy')
        card.rawFields()
Пример #49
0
    def test_cbush_01(self):
        lines = ['cbush,101,102,1,,,,,0']
        card = bdf.process_card(lines)
        card = BDFCard(card)

        size = 8
        card = CBUSH(card)
        self.assertEqual(card.Eid(), 101)
        self.assertEqual(card.Pid(), 102)
        card.write_card(size, 'dummy')
        card.raw_fields()
Пример #50
0
    def test_darea_01(self):
        #
        #DAREA SID P1 C1 A1  P2 C2 A2
        #DAREA 3   6   2 8.2 15 1  10.1
        lines = ['DAREA,3,6,2,8.2,15,1,10.1']
        card = bdf.process_card(lines)
        card = BDFCard(card)

        size = 8
        card = DAREA(card)
        card.write_card(size, 'dummy')
        card.raw_fields()
Пример #51
0
    def test_cgap_01(self):
        lines = ['CGAP    899     90      21      99      0.      1.      0.      0']
        card = bdf.process_card(lines)
        card = BDFCard(card)

        size = 8
        card = CGAP(card)
        node_ids = card.node_ids
        assert node_ids == [21, 99], node_ids
        self.assertEqual(card.Eid(), 899)
        self.assertEqual(card.Pid(), 90)
        card.write_card(size, 'dummy')
        card.raw_fields()
Пример #52
0
    def test_crod_01(self):
        lines = ['CROD          10     100      10       2']
        card = bdf.process_card(lines)
        card = BDFCard(card)

        size = 8
        card = CROD(card)
        card.write_card(size, 'dummy')
        card.raw_fields()
        self.assertEqual(card.Eid(), 10)
        self.assertEqual(card.Pid(), 100)
        node_ids = card.node_ids
        assert node_ids == [10, 2], node_ids # probably wrong
Пример #53
0
    def test_conrod_01(self):
        eid = 10
        nid1 = 2
        nid2 = 3
        mid = 5
        A = 27.0
        lines = ['conrod,%i, %i, %i, %i, %f' % (eid, nid1, nid2, mid, A)]
        card = bdf.process_card(lines)
        card = BDFCard(card)

        size = 8
        card = CONROD(card)
        card.write_bdf(size, 'dummy')
        card.raw_fields()
        self.assertEquals(card.Eid(), eid)
        self.assertEquals(card.Mid(), mid)