def get_mass(self, nid1, nid2, xyz1, xyz2, eid, pid, mid, A, J, c, nsm, E, G, nu, rho, L): """tests a CROD and a CONROD""" model = BDF(debug=False) lines = ['conrod,%i, %i, %i, %i, %f, %f, %f, %f' % (eid, nid1, nid2, mid, A, J, c, nsm)] card = model.process_card(lines) cardi = BDFCard(card) conrod = CONROD.add_card(cardi) model._add_element_object(conrod) card = model.elements[eid] node_ids = card.node_ids assert node_ids == [nid1, nid2], node_ids # probably wrong lines = ['crod,%i, %i, %i, %i' % (eid+1, pid, nid1, nid2)] card = model.process_card(lines) cardi = BDFCard(card) crod = CROD.add_card(cardi) model._add_element_object(crod) card = model.elements[eid+1] node_ids = card.node_ids assert node_ids == [nid1, nid2], node_ids # probably wrong lines = ['ctube,%i, %i, %i, %i' % (eid+2, pid+1, nid1, nid2)] card = model.process_card(lines) cardi = BDFCard(card) ctube = CTUBE.add_card(cardi) model._add_element_object(ctube) card = model.elements[eid+2] node_ids = card.node_ids assert node_ids == [nid1, nid2], node_ids # probably wrong lines = ['prod,%i, %i, %f, %f, %f, %f' % (pid, mid, A, J, c, nsm)] card = model.process_card(lines) cardi = BDFCard(card) prod = PROD.add_card(cardi) model._add_property_object(prod) #self.pid = integer(card, 1, 'pid') #self.mid = integer(card, 2, 'mid') #self.OD1 = double(card, 3, 'OD1') #self.t = double_or_blank(card, 4, 't', self.OD1 / 2.) #self.nsm = double_or_blank(card, 5, 'nsm', 0.0) #self.OD2 = double_or_blank(card, 6, 'OD2', self.OD1) OD1 = sqrt(4*A/pi) t = 0. OD2 = OD1 lines = ['ptube,%i, %i, %f, %f, %f, %f' % (pid+1, mid, OD1, t, nsm, OD2)] card = model.process_card(lines) cardi = BDFCard(card) ptube = PTUBE.add_card(cardi) model._add_property_object(ptube) lines = ['mat1,%i, %.2e, %.2e, %f, %f' % (mid, E, G, nu, rho)] card = model.process_card(lines) cardi = BDFCard(card) card = MAT1.add_card(cardi) model._add_structural_material_object(card) lines = ['grid,%i, %i, %f, %f, %f' % (nid1, 0, xyz1[0], xyz1[1], xyz1[2])] card = model.process_card(lines) cardi = BDFCard(card) card = GRID.add_card(cardi) model._add_node_object(card) lines = ['grid,%i, %i, %f, %f, %f' % (nid2, 0, xyz2[0], xyz2[1], xyz2[2])] card = model.process_card(lines) cardi = BDFCard(card) card = GRID.add_card(cardi) model._add_node_object(card) model.cross_reference() mass = L * (rho * A + nsm) # conrod self.assertEqual(conrod.eid, eid) self.assertEqual(conrod.Pid(), None) self.assertEqual(conrod.Mid(), mid) self.assertEqual(conrod.Length(), L) self.assertEqual(conrod.Nsm(), nsm) self.assertEqual(conrod.Mass(), mass) self.assertEqual(conrod.E(), E) self.assertEqual(conrod.G(), G) self.assertEqual(conrod.Area(), A) self.assertEqual(conrod.J(), J) self.assertEqual(conrod.C(), c) self.assertEqual(conrod.Rho(), rho) # crod self.assertEqual(crod.eid, eid+1) self.assertEqual(crod.Pid(), pid) self.assertEqual(crod.Mid(), mid) self.assertEqual(crod.Length(), L) self.assertEqual(crod.Nsm(), nsm) self.assertEqual(crod.Mass(), mass) self.assertEqual(crod.E(), E) self.assertEqual(crod.G(), G) self.assertEqual(crod.Area(), A) self.assertEqual(crod.J(), J) self.assertEqual(crod.C(), c) self.assertEqual(crod.Rho(), rho) #self.assertEqual(crod.Nu(), nu) # prod self.assertEqual(prod.Pid(), pid) self.assertEqual(prod.Mid(), mid) self.assertEqual(prod.Nsm(), nsm) self.assertEqual(prod.E(), E) self.assertEqual(prod.G(), G) self.assertEqual(prod.Area(), A) self.assertEqual(prod.J(), J) self.assertEqual(prod.C(), c) self.assertEqual(prod.Rho(), rho) # ctube self.assertEqual(ctube.eid, eid+2) self.assertEqual(ctube.Pid(), pid+1) self.assertEqual(ctube.Mid(), mid) self.assertEqual(ctube.Length(), L) self.assertEqual(ctube.Nsm(), nsm) self.assertAlmostEqual(ctube.Mass(), mass, 5) self.assertEqual(ctube.E(), E) self.assertEqual(ctube.G(), G) self.assertAlmostEqual(ctube.Area(), A, 5) ctube.J() self.assertEqual(ctube.Rho(), rho) # ptube self.assertEqual(ptube.Pid(), pid+1) self.assertEqual(ptube.Mid(), mid) self.assertEqual(ptube.Nsm(), nsm) self.assertEqual(ptube.E(), E) self.assertEqual(ptube.G(), G) self.assertAlmostEqual(ptube.Area(), A, 5) ptube.J() self.assertEqual(ptube.Rho(), rho)
def get_mass(self, nid1, nid2, xyz1, xyz2, eid, pid, mid, A, J, c, nsm, E, G, nu, rho, L): """tests a CROD and a CONROD""" model = BDF(debug=False) lines = [ 'conrod,%i, %i, %i, %i, %f, %f, %f, %f' % (eid, nid1, nid2, mid, A, J, c, nsm) ] card = model.process_card(lines) cardi = BDFCard(card) conrod = CONROD.add_card(cardi) model._add_element_object(conrod) card = model.elements[eid] node_ids = card.node_ids assert node_ids == [nid1, nid2], node_ids # probably wrong lines = ['crod,%i, %i, %i, %i' % (eid + 1, pid, nid1, nid2)] card = model.process_card(lines) cardi = BDFCard(card) crod = CROD.add_card(cardi) model._add_element_object(crod) card = model.elements[eid + 1] node_ids = card.node_ids assert node_ids == [nid1, nid2], node_ids # probably wrong lines = ['ctube,%i, %i, %i, %i' % (eid + 2, pid + 1, nid1, nid2)] card = model.process_card(lines) cardi = BDFCard(card) ctube = CTUBE.add_card(cardi) model._add_element_object(ctube) card = model.elements[eid + 2] node_ids = card.node_ids assert node_ids == [nid1, nid2], node_ids # probably wrong lines = ['prod,%i, %i, %f, %f, %f, %f' % (pid, mid, A, J, c, nsm)] card = model.process_card(lines) cardi = BDFCard(card) prod = PROD.add_card(cardi) model._add_property_object(prod) #self.pid = integer(card, 1, 'pid') #self.mid = integer(card, 2, 'mid') #self.OD1 = double(card, 3, 'OD1') #self.t = double_or_blank(card, 4, 't', self.OD1 / 2.) #self.nsm = double_or_blank(card, 5, 'nsm', 0.0) #self.OD2 = double_or_blank(card, 6, 'OD2', self.OD1) OD1 = sqrt(4 * A / pi) t = 0. OD2 = OD1 lines = [ 'ptube,%i, %i, %f, %f, %f, %f' % (pid + 1, mid, OD1, t, nsm, OD2) ] card = model.process_card(lines) cardi = BDFCard(card) ptube = PTUBE.add_card(cardi) model._add_property_object(ptube) lines = ['mat1,%i, %.2e, %.2e, %f, %f' % (mid, E, G, nu, rho)] card = model.process_card(lines) cardi = BDFCard(card) card = MAT1.add_card(cardi) model._add_structural_material_object(card) lines = [ 'grid,%i, %i, %f, %f, %f' % (nid1, 0, xyz1[0], xyz1[1], xyz1[2]) ] card = model.process_card(lines) cardi = BDFCard(card) card = GRID.add_card(cardi) model._add_node_object(card) lines = [ 'grid,%i, %i, %f, %f, %f' % (nid2, 0, xyz2[0], xyz2[1], xyz2[2]) ] card = model.process_card(lines) cardi = BDFCard(card) card = GRID.add_card(cardi) model._add_node_object(card) model.cross_reference() mass = L * (rho * A + nsm) # conrod self.assertEqual(conrod.eid, eid) self.assertEqual(conrod.Pid(), -10) self.assertEqual(conrod.Mid(), mid) self.assertEqual(conrod.Length(), L) self.assertEqual(conrod.Nsm(), nsm) self.assertEqual(conrod.Mass(), mass) self.assertEqual(conrod.E(), E) self.assertEqual(conrod.G(), G) self.assertEqual(conrod.Area(), A) self.assertEqual(conrod.J(), J) self.assertEqual(conrod.C(), c) self.assertEqual(conrod.Rho(), rho) # crod self.assertEqual(crod.eid, eid + 1) self.assertEqual(crod.Pid(), pid) self.assertEqual(crod.Mid(), mid) self.assertEqual(crod.Length(), L) self.assertEqual(crod.Nsm(), nsm) self.assertEqual(crod.Mass(), mass) self.assertEqual(crod.E(), E) self.assertEqual(crod.G(), G) self.assertEqual(crod.Area(), A) self.assertEqual(crod.J(), J) self.assertEqual(crod.C(), c) self.assertEqual(crod.Rho(), rho) #self.assertEqual(crod.Nu(), nu) # prod self.assertEqual(prod.Pid(), pid) self.assertEqual(prod.Mid(), mid) self.assertEqual(prod.Nsm(), nsm) self.assertEqual(prod.E(), E) self.assertEqual(prod.G(), G) self.assertEqual(prod.Area(), A) self.assertEqual(prod.J(), J) self.assertEqual(prod.C(), c) self.assertEqual(prod.Rho(), rho) # ctube self.assertEqual(ctube.eid, eid + 2) self.assertEqual(ctube.Pid(), pid + 1) self.assertEqual(ctube.Mid(), mid) self.assertEqual(ctube.Length(), L) self.assertEqual(ctube.Nsm(), nsm) self.assertAlmostEqual(ctube.Mass(), mass, 5) self.assertEqual(ctube.E(), E) self.assertEqual(ctube.G(), G) self.assertAlmostEqual(ctube.Area(), A, 5) ctube.J() self.assertEqual(ctube.Rho(), rho) # ptube self.assertEqual(ptube.Pid(), pid + 1) self.assertEqual(ptube.Mid(), mid) self.assertEqual(ptube.Nsm(), nsm) self.assertEqual(ptube.E(), E) self.assertEqual(ptube.G(), G) self.assertAlmostEqual(ptube.Area(), A, 5) ptube.J() self.assertEqual(ptube.Rho(), rho)
def test_spline2(self): """checks the SPLINE2 card""" #| SPLINE2 | EID | CAERO | ID1 | ID2 | SETG | DZ | DTOR | CID | #| | DTHX | DTHY | None | USAGE | | | | | #+---------+------+-------+-------+-------+------+----+------+-----+ #| SPLINE2 | 5 | 8 | 12 | 24 | 60 | 0. | 1.0 | 3 | #| | 1. | | | | | | | | cid = 3 origin = [0., 0., 0.] xaxis = [1., 0., 0.] xyplane = [0., 1., 0.] coord = CORD2R.add_axes(cid, rid=0, origin=origin, xaxis=xaxis, yaxis=None, zaxis=None, xyplane=xyplane, yzplane=None, xzplane=None, comment='comment') eid = 8 pid = 10 cp = 0 nsb = 4 nint = 2 lsb = None lint = None p1 = [0., 0., 0.] x12 = 42. igid = None caero2 = CAERO2(eid, pid, igid, p1, x12, cp=cp, nsb=nsb, nint=nint, lsb=lsb, lint=lint, comment='this is a caero') #caero = CAERO2(eid, pid, cp, nsb, nint, lsb, lint, igid, p1, x12) sid = 60 ids = [7, 13] set_obj = SET1(sid, ids, is_skin=False, comment='set card') grid7 = GRID(nid=7, cp=0, xyz=[7., 0., 0.], cd=0, ps='', seid=0, comment='') grid13 = GRID(nid=13, cp=0, xyz=[13., 0., 0.], cd=0, ps='', seid=0, comment='') model = BDF(log=None) model._add_coord_object(coord) model._add_caero_object(caero2) model._add_set_object(set_obj) model._add_node_object(grid7) model._add_node_object(grid13) eid = 5 caero = 8 id1 = 12 id2 = 24 setg = 60 dz = 0. dtor = 1.0 cid = 3 dthx = 1. dthy = None usage = None card = ['SPLINE2', eid, caero, id1, id2, setg, dz, dtor, cid, dthx, dthy, None, usage] bdf_card = BDFCard(card, has_none=True) spline_a = SPLINE2.add_card(bdf_card, comment='spline2_a') spline_a.write_card() spline_b = SPLINE2(eid, caero, id1, id2, setg, dz, dtor, cid, dthx, dthy, usage, comment='spline2_b') spline_b.validate() spline_b.write_card() spline_b.cross_reference(model) spline_b.write_card()