def test_crod_torsion(self): """Tests a CROD/PROD""" model = BDF(debug=True, log=None, mode='msc') model.bdf_filename = 'crod_torsion.bdf' model.add_grid(1, [0., 0., 0.]) model.add_grid(2, [1., 0., 0.]) nids = [1, 2] eid = 1 pid = 2 mid = 3 E = 3.0e7 G = None nu = 0.3 model.add_mat1(mid, E, G, nu, rho=0.1, a=0.0, tref=0.0, ge=0.0, St=0.0, Sc=0.0, Ss=0.0, mcsid=0) model.add_crod(eid, pid, nids) model.add_prod(pid, mid, A=0.0, j=2., c=0., nsm=1.) load_id = 2 spc_id = 3 nid = 2 mag = 1. fxyz = [1., 0., 0.] model.add_moment(load_id, nid, mag, fxyz, cid=0) components = 123456 nodes = 1 model.add_spc1(spc_id, components, nodes, comment='') setup_case_control(model) solver = Solver(model) solver.run()
def test_conrod(self): """Tests a CONROD""" model = BDF(debug=True, log=None, mode='msc') L = 1. model.add_grid(1, [0., 0., 0.]) model.add_grid(2, [L, 0., 0.]) nids = [1, 2] eid = 1 mid = 3 E = 200. G = None nu = 0.3 model.add_mat1(mid, E, G, nu, rho=0.0, a=0.0, tref=0.0, ge=0.0, St=0.0, Sc=0.0, Ss=0.0, mcsid=0) A = 1.0 J = 2.0 model.add_conrod(eid, mid, nids, A=A, j=J, c=0.0, nsm=0.0) load_id = 2 spc_id = 3 nid = 2 mag_axial = 10000. fxyz = [1., 0., 0.] model.add_force(load_id, nid, mag_axial, fxyz, cid=0) mag_torsion = 20000. fxyz = [1., 0., 0.] model.add_moment(load_id, nid, mag_torsion, fxyz, cid=0) components = 123456 nodes = 1 model.add_spc1(spc_id, components, nodes, comment='') #nodes = 2 #model.add_spc1(spc_id, 23456, nodes, comment='') setup_case_control(model) solver = Solver(model) solver.run() # TODO: why is this a torsional result??? G = E / (2 * (1 + nu)) kaxial = A * E / L ktorsion = G * J / L # F = k * d daxial = mag_axial / kaxial dtorsion = mag_torsion / ktorsion assert np.allclose(solver.xa_[0], daxial), f'daxial={daxial} kaxial={kaxial} xa_={solver.xa_}' assert np.allclose(solver.xa_[3], dtorsion), f'dtorsion={dtorsion} ktorsion={ktorsion} xa_={solver.xa_}'