def test_loads_sum_02(self): """tests FORCE""" model = BDF(log=log, debug=False) bdf_filename = os.path.join(model_path, 'sol_101_elements', 'static_solid_shell_bar.bdf') model.read_bdf(bdf_filename) loadcase_id = 10000 #print("keys2", model.loads.keys()) p0 = array([0., 0., 0.]) F_expected = array([0., 0., 10000.]) M_expected = array([5000., -5000., 0.]) eids = None nids = None F1, M1 = sum_forces_moments(model, p0, loadcase_id, include_grav=False) F2, M2 = sum_forces_moments_elements(model, p0, loadcase_id, eids, nids, include_grav=False) assert np.allclose(F1, F2), 'F1=%s F2=%s' % (F1, F2) assert np.allclose(M1, M2), 'M1=%s M2=%s' % (M1, M2) self.assertTrue( allclose(F_expected, F1), 'loadcase_id=%s F_expected=%s F1=%s' % (loadcase_id, F_expected, F1)) self.assertTrue( allclose(M_expected, M1), 'loadcase_id=%s M_expected=%s M1=%s' % (loadcase_id, M_expected, M1)) loadcase_id = 123458 p0 = array([0., 0., 0.]) F_expected = array([0., 0., 10000.]) M_expected = array([5000., -5000., 0.]) F1, M1 = sum_forces_moments(model, p0, loadcase_id, include_grav=False) F2, M2 = sum_forces_moments_elements(model, p0, loadcase_id, eids, nids, include_grav=False) assert np.allclose(F1, F2), 'F1=%s F2=%s' % (F1, F2) assert np.allclose(M1, M2), 'M1=%s M2=%s' % (M1, M2) self.assertTrue( allclose(F_expected, F1), 'loadcase_id=%s F_expected=%s F1=%s' % (loadcase_id, F_expected, F1)) self.assertTrue( allclose(M_expected, M1), 'loadcase_id=%s M_expected=%s M1=%s' % (loadcase_id, M_expected, M1))
def test_loads_sum_01(self): """tests FORCE""" model = BDF(log=log, debug=False) bdf_filename = os.path.join(model_path, 'solid_bending', 'solid_bending.bdf') model.read_bdf(bdf_filename) loadcase_id = 1 #print("keys1", model.loads.keys()) p0 = array([0., 0., 0.]) F_expected = array([23000., 0., 0.]) M_expected = array([0., 33209.869, -22803.951]) eids = None nids = None F1, M1 = sum_forces_moments(model, p0, loadcase_id, include_grav=False) F2, M2 = sum_forces_moments_elements(model, p0, loadcase_id, eids, nids, include_grav=False) assert np.allclose(F1, F2), 'F1=%s F2=%s' % (F1, F2) assert np.allclose(M1, M2), 'M1=%s M2=%s' % (M1, M2) self.assertTrue( allclose(F_expected, F1), 'loadcase_id=%s F_expected=%s F1=%s' % (loadcase_id, F_expected, F1)) self.assertTrue( allclose(M_expected, M1), 'loadcase_id=%s M_expected=%s M1=%s' % (loadcase_id, M_expected, M1))
def test_loads_sum_03(self): """tests N/A""" if 0: # pragma: no cover model = BDF(log=log, debug=False) bdf_filename = os.path.join(model_path, 'iSat', 'ISat_Launch_Sm_4pt.dat') model.read_bdf(bdf_filename) loadcase_id = 1 #print("keys3", model.loads.keys()) p0 = array([0., 0., 0.]) F_expected = array([0., 0., 1.]) M_expected = array([0., 0., 0.]) eids = None nids = None F, M = sum_forces_moments(model, p0, loadcase_id, include_grav=False) F2, M2 = sum_forces_moments_elements(model, p0, loadcase_id, eids, nids, include_grav=False) assert np.allclose(F, F2), 'F=%s F2=%s' % (F, F2) assert np.allclose(M, M2), 'M=%s M2=%s' % (M, M2) self.assertTrue( allclose(F_expected, F), 'loadcase_id=%s F_expected=%s F=%s' % (loadcase_id, F_expected, F)) self.assertTrue( allclose(M_expected, M), 'loadcase_id=%s M_expected=%s M=%s' % (loadcase_id, M_expected, M))
def _test_loads_sum_06(self): model = BDF(log=log, debug=False) bdf_filename = os.path.join(model_path, 'real', 'loads', 'bars.bdf') model.read_bdf(bdf_filename) p0 = array([0., 0., 0.]) loadcase_id = 1 F1, M1 = sum_forces_moments(model, p0, loadcase_id, include_grav=False) F2, M2 = sum_forces_moments_elements(model, p0, loadcase_id, eids, nids, include_grav=False) assert np.allclose(F1, F2), 'F1=%s F2=%s' % (F1, F2) assert np.allclose(M1, M2), 'M1=%s M2=%s' % (M1, M2) if 0: # pragma: no cover r = array([0., 0., 0.]) F1_expected = array([0., 0., 1.]) M1_expected = cross(r, F1_expected) F1, M1 = sum_forces_moments(model, p0, loadcase_id, include_grav=False) F2, M2 = sum_forces_moments_elements(model, p0, loadcase_id, eids, nids, include_grav=False) assert np.allclose(F1, F2), 'F1=%s F2=%s' % (F1, F2) assert np.allclose(M1, M2), 'M1=%s M2=%s' % (M1, M2) self.assertTrue( allclose(F1_expected, F1), 'loadcase_id=%s F_expected=%s F1=%s' % (loadcase_id, F1_expected, F1)) self.assertTrue( allclose(M1_expected, M1), 'loadcase_id=%s M_expected=%s M1=%s' % (loadcase_id, M1_expected, M1))
def sum_loads(loadcase_id, force): force1, moment1 = sum_forces_moments(model, p0, loadcase_id, include_grav=False, xyz_cid0=None) force2, moment2 = sum_forces_moments_elements(model, p0, loadcase_id, eids, nids, include_grav=False, xyz_cid0=None) assert np.allclose( force1, force), 'sid=%s force1=%s force2=%s' % (loadcase_id, force1, force2) assert np.allclose( force2, force), 'sid=%s force1=%s force2=%s' % (loadcase_id, force1, force2)
def sum_forces_moments_elements(self, p0, loadcase_id, eids, nids, include_grav=False, xyz_cid0=None): # type: (int, int, List[int], List[int], bool, Union[None, Dict[int, np.ndarray]]) -> Tuple[np.ndarray, np.ndarray] """ Sum the forces/moments based on a list of nodes and elements. Parameters ---------- eids : List[int] the list of elements to include (e.g. the loads due to a PLOAD4) nids : List[int] the list of nodes to include (e.g. the loads due to a FORCE card) p0 : int; (3,) ndarray the point to sum moments about type = int sum moments about the specified grid point type = (3, ) ndarray/list (e.g. [10., 20., 30]): the x, y, z location in the global frame loadcase_id : int the LOAD=ID to analyze include_grav : bool; default=False includes gravity in the summation (not supported) xyz_cid0 : None / Dict[int] = (3, ) ndarray the nodes in the global coordinate system Returns ------- forces : NUMPY.NDARRAY shape=(3,) the forces moments : NUMPY.NDARRAY shape=(3,) the moments Nodal Types : FORCE, FORCE1, FORCE2, MOMENT, MOMENT1, MOMENT2, PLOAD Element Types: PLOAD1, PLOAD2, PLOAD4, GRAV If you have a CQUAD4 (eid=3) with a PLOAD4 (sid=3) and a FORCE card (nid=5) acting on it, you can incldue the PLOAD4, but not the FORCE card by using: For just pressure: .. code-block:: python eids = [3] nids = [] For just force: .. code-block:: python eids = [] nids = [5] or both: .. code-block:: python eids = [3] nids = [5] Notes ----- If you split the model into sections and sum the loads on each section, you may not get the same result as if you summed the loads on the total model. This is due to the fact that nodal loads on the boundary are double/triple/etc. counted depending on how many breaks you have. .. todo:: not done... """ self.deprecated( 'forces, moments = model.sum_forces_moments_elements(...)', 'from pyNastran.bdf.mesh_utils.loads import sum_forces_moments_elements\n' 'forces, moments = sum_forces_moments_elements(model, ...)', '1.3') forces, moments = sum_forces_moments_elements( self, p0, loadcase_id, eids, nids, include_grav=include_grav, xyz_cid0=xyz_cid0) return forces, moments
def test_loads_sum_radial_01(self): model = BDF(debug=False) model.nodes[1] = GRID(1, cp=1, xyz=[0., 0., 0.], cd=0, ps='', seid=0, comment='') cid = 1 origin = [0., 0., 0.] zaxis = [0., 0., 1.] xaxis = [1., 0., 0.] model.add_cord2c(cid, rid=0, origin=origin, zaxis=zaxis, xzplane=xaxis, comment='') sid = 1 node = 1 cid = 1 mag = 1.1 xyz = [1., 0., 0.] unused_radial_force = model.add_force(sid, node, mag, xyz, cid=cid, comment='') sid = 2 xyz = [1., 90., 0.] mag = 2.2 unused_theta_force = model.add_force(sid, node, mag, xyz, cid=cid, comment='') model.cross_reference() p0 = 1 eids = None nids = None loadcase_id = 1 F1, M1 = sum_forces_moments(model, p0, loadcase_id, include_grav=False, xyz_cid0=None) F2, M2 = sum_forces_moments_elements(model, p0, loadcase_id, eids, nids, include_grav=False, xyz_cid0=None) assert np.allclose(F1, F2), 'F1=%s F2=%s' % (F1, F2) assert np.allclose(M1, M2), 'M1=%s M2=%s' % (M1, M2) F1_expected = np.array([1.1, 0., 0.]) M1_expected = np.array([0., 0., 0.]) self.assertTrue( allclose(F1_expected, F1), 'loadcase_id=%s F_expected=%s F1=%s' % (loadcase_id, F1_expected, F1)) self.assertTrue( allclose(M1_expected, M1), 'loadcase_id=%s M_expected=%s M1=%s' % (loadcase_id, M1_expected, M1)) loadcase_id = 2 F1, M1 = sum_forces_moments(model, p0, loadcase_id, include_grav=False, xyz_cid0=None) F2, M2 = sum_forces_moments_elements(model, p0, loadcase_id, eids, nids, include_grav=False, xyz_cid0=None) assert np.allclose(F1, F2), 'F1=%s F2=%s' % (F1, F2) assert np.allclose(M1, M2), 'M1=%s M2=%s' % (M1, M2) F2_expected = np.array([0., 2.2, 0.]) M2_expected = np.array([0., 0., 0.]) self.assertTrue( allclose(F2_expected, F1), 'loadcase_id=%s F_expected=%s F1=%s' % (loadcase_id, F2_expected, F1)) self.assertTrue( allclose(M2_expected, M1), 'loadcase_id=%s M_expected=%s M1=%s' % (loadcase_id, M2_expected, M1))
def test_loads_sum_05(self): """ tests: - 1=LOAD/PLOAD4 - 2=LOAD/PLOAD4/FORCE - 5=PLOAD4 - 6=PLOAD4 - 1001=PLOAD4 - 1002=1002 - 1003=PLOAD """ model = BDF(log=log, debug=False) bdf_filename = os.path.join(model_path, 'real', 'loads', 'loads.bdf') model.read_bdf(bdf_filename) p = 3. A = 1. n = array([0., 0., 1.]) F1001_expected = p * A * n r = array([0.5, 1.5, 0.]) p0 = array([0., 0., 0.]) M1001_expected = cross(r, F1001_expected) loadcase_id = 1001 eids = None nids = None F1, M1 = sum_forces_moments(model, p0, loadcase_id, include_grav=False) F2, M2 = sum_forces_moments_elements(model, p0, loadcase_id, eids, nids, include_grav=False) assert np.allclose(F1, F2), 'F1=%s F2=%s' % (F1, F2) assert np.allclose(M1, M2), 'M1=%s M2=%s' % (M1, M2) self.assertTrue( allclose(F1001_expected, F1), 'loadcase_id=%s F_expected=%s F1=%s' % (loadcase_id, F1001_expected, F1)) self.assertTrue( allclose(M1001_expected, M1), 'loadcase_id=%s M_expected=%s M1=%s' % (loadcase_id, M1001_expected, M1)) loadcase_id = 1002 r = array([4., 2., 0.]) F1002_expected = array([0., 0., 1.]) M1002_expected = cross(r, F1002_expected) F1, M1 = sum_forces_moments(model, p0, loadcase_id, include_grav=False) F2, M2 = sum_forces_moments_elements(model, p0, loadcase_id, eids, nids, include_grav=False) self.assertTrue( allclose(F1002_expected, F1), 'loadcase_id=%s F_expected=%s F1=%s' % (loadcase_id, F1002_expected, F1)) self.assertTrue( allclose(M1002_expected, M1), 'loadcase_id=%s M_expected=%s M1=%s' % (loadcase_id, M1002_expected, M1)) loadcase_id = 1 F1, M1 = sum_forces_moments(model, p0, loadcase_id, include_grav=False) F2, M2 = sum_forces_moments_elements(model, p0, loadcase_id, eids, nids, include_grav=False) assert np.allclose(F1, F2), 'F1=%s F2=%s' % (F1, F2) assert np.allclose(M1, M2), 'M1=%s M2=%s' % (M1, M2) self.assertTrue( allclose(F1001_expected, F1), 'loadcase_id=%s F_expected=%s F1=%s' % (loadcase_id, F1001_expected, F1)) self.assertTrue( allclose(M1001_expected, M1), 'loadcase_id=%s M_expected=%s M1=%s' % (loadcase_id, M1001_expected, M1)) loadcase_id = 2 F2_expected = F1001_expected + F1002_expected M2_expected = M1001_expected + M1002_expected F1, M1 = sum_forces_moments(model, p0, loadcase_id, include_grav=False) F2, M2 = sum_forces_moments_elements(model, p0, loadcase_id, eids, nids, include_grav=False) assert np.allclose(F1, F2), 'F1=%s F2=%s' % (F1, F2) assert np.allclose(M1, M2), 'M1=%s M2=%s' % (M1, M2) self.assertTrue( allclose(F2_expected, F1), 'loadcase_id=%s F_expected=%s F1=%s' % (loadcase_id, F2_expected, F1)) self.assertTrue( allclose(M2_expected, M1), 'loadcase_id=%s M_expected=%s M1=%s' % (loadcase_id, M2_expected, M1)) F6_expected = 2. * (3. * F1001_expected + 13. * F1002_expected) M6_expected = 2. * (3. * M1001_expected + 13. * M1002_expected) F7_expected = 7. * 11. * F6_expected M7_expected = 7. * 11. * M6_expected if 0: # pragma: no cover loadcase_id = 6 F1, M1 = sum_forces_moments(model, p0, loadcase_id, include_grav=False) F2, M2 = sum_forces_moments_elements(model, p0, loadcase_id, eids, nids, include_grav=False) assert np.allclose(F1, F2), 'F1=%s F2=%s' % (F1, F2) assert np.allclose(M1, M2), 'M1=%s M2=%s' % (M1, M2) self.assertTrue( allclose(F6_expected, F1), 'loadcase_id=%s F_expected=%s F1=%s' % (loadcase_id, F6_expected, F1)) self.assertTrue( allclose(M6_expected, M1), 'loadcase_id=%s M_expected=%s M1=%s' % (loadcase_id, M6_expected, M1)) loadcase_id = 7 F1, M1 = sum_forces_moments(model, p0, loadcase_id, include_grav=False) F2, M2 = sum_forces_moments_elements(model, p0, loadcase_id, eids, nids, include_grav=False) assert np.allclose(F1, F2), 'F1=%s F2=%s' % (F1, F2) assert np.allclose(M1, M2), 'M1=%s M2=%s' % (M1, M2) self.assertTrue( allclose(F7_expected, F1), 'loadcase_id=%s F_expected=%s F1=%s' % (loadcase_id, F7_expected, F1)) self.assertTrue( allclose(M7_expected, M1), 'loadcase_id=%s M_expected=%s M1=%s' % (loadcase_id, M7_expected, M1)) loadcase_id = 5 p = 2. A = 1. n = array([0., 1., 1.]) / np.sqrt(2.) F5_expected = p * A * n r = array([0.5, 0.5, 0.]) M5_expected = cross(r, F5_expected) F1, M1 = sum_forces_moments(model, p0, loadcase_id, include_grav=False) F2, M2 = sum_forces_moments_elements(model, p0, loadcase_id, eids, nids, include_grav=False) assert np.allclose(F1, F2), 'F1=%s F2=%s' % (F1, F2) assert np.allclose(M1, M2), 'M1=%s M2=%s' % (M1, M2) self.assertTrue( allclose(F5_expected, F1), 'loadcase_id=%s F_expected=%s F1=%s' % (loadcase_id, F5_expected, F1)) self.assertTrue( allclose(M5_expected, M1), 'loadcase_id=%s M_expected=%s M1=%s' % (loadcase_id, M5_expected, M1)) #print('loadcase_id=%s F1=%s M1=%s' % (loadcase_id, F1, M1)) loadcase_id = 6 p = 2. A = 1. n = array([0., 0., 0.5]) / 0.5 F6_expected = p * A * n r = array([0.5, 0.5, 0.]) M6_expected = cross(r, F6_expected) F1, M1 = sum_forces_moments(model, p0, loadcase_id, include_grav=False) F2, M2 = sum_forces_moments_elements(model, p0, loadcase_id, eids, nids, include_grav=False) assert np.allclose(F1, F2), 'F1=%s F2=%s' % (F1, F2) assert np.allclose(M1, M2), 'M1=%s M2=%s' % (M1, M2) self.assertTrue( allclose(F6_expected, F1), 'loadcase_id=%s F_expected=%s F1=%s' % (loadcase_id, F6_expected, F1)) self.assertTrue( allclose(M6_expected, M1), 'loadcase_id=%s M_expected=%s M1=%s' % (loadcase_id, M6_expected, M1)) #print('loadcase_id=%s F1=%s M1=%s' % (loadcase_id, F1, M1)) loadcase_id = 1003 p = 9. A = 1. n = array([0., 0., 1.]) F1003_expected = p * A * n r = array([0.5, 0.5, 0.]) M1003_expected = cross(r, F1003_expected) F1, M1 = sum_forces_moments(model, p0, loadcase_id, include_grav=False) F2, M2 = sum_forces_moments_elements(model, p0, loadcase_id, eids, nids, include_grav=False) assert np.allclose(F1, F2), 'F1=%s F2=%s' % (F1, F2) assert np.allclose(M1, M2), 'M1=%s M2=%s' % (M1, M2) self.assertTrue( allclose(F1003_expected, F1), 'loadcase_id=%s F_expected=%s F1=%s' % (loadcase_id, F1003_expected, F1)) self.assertTrue( allclose(M1003_expected, M1), 'loadcase_id=%s M_expected=%s M1=%s' % (loadcase_id, M1003_expected, M1)) loadcase_id = 8 F8_expected = 2. * (3. * F7_expected + 2. * F1003_expected) M8_expected = 2. * (3. * M7_expected + 2. * M1003_expected) if 0: # pragma: no cover F1, M1 = sum_forces_moments(model, p0, loadcase_id, include_grav=False) F2, M2 = sum_forces_moments_elements(model, p0, loadcase_id, eids, nids, include_grav=False) assert np.allclose(F1, F2), 'F1=%s F2=%s' % (F1, F2) assert np.allclose(M1, M2), 'M1=%s M2=%s' % (M1, M2) self.assertTrue( allclose(F8_expected, F1), 'loadcase_id=%s F_expected=%s F1=%s' % (loadcase_id, F8_expected, F1)) self.assertTrue( allclose(M8_expected, M1), 'loadcase_id=%s M_expected=%s M1=%s' % (loadcase_id, M8_expected, M1)) loadcase_id = 800 p = 3.5 A = 1. n = array([0., 0., 1.]) F800_expected = p * A * n r = array([3.5, 1.5, 0.]) M800_expected = cross(r, F800_expected) if 0: # pragma: no cover F1, M1 = sum_forces_moments(model, p0, loadcase_id, include_grav=False) F2, M2 = sum_forces_moments_elements(model, p0, loadcase_id, eids, nids, include_grav=False) assert np.allclose(F1, F2), 'F1=%s F2=%s' % (F1, F2) assert np.allclose(M1, M2), 'M1=%s M2=%s' % (M1, M2) self.assertTrue( allclose(F800_expected, F1), 'loadcase_id=%s F_expected=%s F1=%s' % (loadcase_id, F800_expected, F1)) self.assertTrue( allclose(M800_expected, M1), 'loadcase_id=%s M_expected=%s M1=%s' % (loadcase_id, M800_expected, M1)) loadcase_id = 801 F801_expected = F800_expected M801_expected = M800_expected if 0: # pragma: no cover F1, M1 = sum_forces_moments(model, p0, loadcase_id, include_grav=False) F2, M2 = sum_forces_moments_elements(model, p0, loadcase_id, eids, nids, include_grav=False) assert np.allclose(F1, F2), 'F1=%s F2=%s' % (F1, F2) assert np.allclose(M1, M2), 'M1=%s M2=%s' % (M1, M2) self.assertTrue( allclose(F801_expected, F1), 'loadcase_id=%s F_expected=%s F1=%s' % (loadcase_id, F801_expected, F1)) self.assertTrue( allclose(M801_expected, M1), 'loadcase_id=%s M_expected=%s M1=%s' % (loadcase_id, M801_expected, M1)) loadcase_id = 802 p = 3.5 A = 0.5 n = array([0., 0., 1.]) F802_expected = p * A * n rx = (3. + 4. + 4.) / 3. ry = (1. + 1. + 2.) / 3. r = array([rx, ry, 0.]) M802_expected = cross(r, F802_expected) if 0: # pragma: no cover F1, M1 = sum_forces_moments(model, p0, loadcase_id, include_grav=False) F2, M2 = sum_forces_moments_elements(model, p0, loadcase_id, eids, nids, include_grav=False) assert np.allclose(F1, F2), 'F1=%s F2=%s' % (F1, F2) assert np.allclose(M1, M2), 'M1=%s M2=%s' % (M1, M2) self.assertTrue( allclose(F802_expected, F1), 'loadcase_id=%s F_expected=%s F1=%s' % (loadcase_id, F802_expected, F1)) self.assertTrue( allclose(M802_expected, M1), 'loadcase_id=%s M_expected=%s M1=%s' % (loadcase_id, M802_expected, M1)) bdf_file = StringIO() model.write_bdf(bdf_file, close=False) bdf_file.seek(0) model.write_bdf(bdf_file, size=16)
def test_loads_sum_04(self): """ tests: - 1=FORCE - 2=LOAD/FORCE - 3=LOAD/PLOAD4 - 4=LOAD/PLOAD4 - 5=LOAD/PLOAD4 - 6=LOAD/PLOAD4 - 10=PLOAD4 - 11=PLOAD4 """ p0 = array([0., 0., 0.]) model = BDF(log=log, debug=False) bdf_filename = os.path.join(model_path, 'plate', 'plate.bdf') #print(bdf_filename) model.read_bdf(bdf_filename) #print("keys4", model.loads.keys()) loadcase_id = 1 F_expected = array([600., 0., 0.]) M_expected = array([0., 0., -3000.]) eids = None nids = None F1, M1 = sum_forces_moments(model, p0, loadcase_id, include_grav=False) F2, M2 = sum_forces_moments_elements(model, p0, loadcase_id, eids, nids, include_grav=False) assert np.allclose(F1, F2), 'F1=%s F2=%s' % (F1, F2) assert np.allclose(M1, M2), 'M1=%s M2=%s' % (M1, M2) self.assertTrue( allclose(F_expected, F1), 'loadcase_id=%s F_expected=%s F1=%s' % (loadcase_id, F_expected, F1)) self.assertTrue( allclose(M_expected, M1), 'loadcase_id=%s M_expected=%s M1=%s' % (loadcase_id, M_expected, M1)) loadcase_id = 2 F_expected = array([600., 0., 0.]) M_expected = array([0., 0., -3000.]) F1, M1 = sum_forces_moments(model, p0, loadcase_id, include_grav=False) self.assertTrue( allclose(F_expected, F1), 'loadcase_id=%s F_expected=%s F1=%s' % (loadcase_id, F_expected, F1)) self.assertTrue( allclose(M_expected, M1), 'loadcase_id=%s M_expected=%s M1=%s' % (loadcase_id, M_expected, M1)) #--------- loadcase_id = 3 A = 0. for e, element in model.elements.items(): A += element.Area() A_expected = 100. self.assertTrue( allclose(A, A_expected), 'loadcase_id=%s A_expected=%s A=%s' % (loadcase_id, A_expected, A)) p = 3. #Fi = p * A eids = None nids = None F1, M1 = sum_forces_moments(model, p0, loadcase_id, include_grav=False) F2, M2 = sum_forces_moments_elements(model, p0, loadcase_id, eids, nids, include_grav=False) assert np.allclose(F1, F2), 'F1=%s F2=%s' % (F1, F2) assert np.allclose(M1, M2), 'M1=%s M2=%s' % (M1, M2) self.assertTrue( allclose(p * A, F1[2]), 'loadcase_id=%s p*A=%s F1=%s' % (loadcase_id, p * A, F1)) F_expected = array([0., 0., 300.]) M_expected = array([1500., -1500., 0.]) self.assertTrue( allclose(F_expected, F1), 'loadcase_id=%s F_expected=%s F1=%s' % (loadcase_id, F_expected, F1)) self.assertTrue( allclose(M_expected, M1), 'loadcase_id=%s M_expected=%s M1=%s' % (loadcase_id, M_expected, M1)) #--- loadcase_id = 10 F1, M1 = sum_forces_moments(model, p0, loadcase_id, include_grav=False) F2, M2 = sum_forces_moments_elements(model, p0, loadcase_id, eids, nids, include_grav=False) assert np.allclose(F1, F2), 'F1=%s F2=%s' % (F1, F2) assert np.allclose(M1, M2), 'M1=%s M2=%s' % (M1, M2) self.assertTrue( allclose(F_expected, F1), 'loadcase_id=%s F_expected=%s F1=%s' % (loadcase_id, F_expected, F1)) self.assertTrue( allclose(M_expected, M1), 'loadcase_id=%s M_expected=%s M1=%s' % (loadcase_id, M_expected, M1)) #--- loadcase_id = 4 F_expected = array([0., 0., 300.]) M_expected = array([1500., -1500., 0.]) F_expected *= 5. M_expected *= 5. F1, M1 = sum_forces_moments(model, p0, loadcase_id, include_grav=False) F2, M2 = sum_forces_moments_elements(model, p0, loadcase_id, eids, nids, include_grav=False) assert np.allclose(F1, F2), 'F1=%s F2=%s' % (F1, F2) assert np.allclose(M1, M2), 'M1=%s M2=%s' % (M1, M2) #print('F =', F) self.assertTrue( allclose(F_expected, F1), 'loadcase_id=%s F_expected=%s F1=%s' % (loadcase_id, F_expected, F1)) self.assertTrue( allclose(M_expected, M1), 'loadcase_id=%s M_expected=%s M1=%s' % (loadcase_id, M_expected, M1)) loadcase_id = 5 F1, M1 = sum_forces_moments(model, p0, loadcase_id, include_grav=False) F2, M2 = sum_forces_moments_elements(model, p0, loadcase_id, eids, nids, include_grav=False) assert np.allclose(F1, F2), 'F1=%s F2=%s' % (F1, F2) assert np.allclose(M1, M2), 'M1=%s M2=%s' % (M1, M2) F_expected = array([0., 0., 300.]) M_expected = array([1500., -1500., 0.]) F_expected *= 7. M_expected *= 7. self.assertTrue( allclose(F_expected, F1), 'loadcase_id=%s F_expected=%s F1=%s' % (loadcase_id, F_expected, F1)) self.assertTrue( allclose(M_expected, M1), 'loadcase_id=%s M_expected=%s M1=%s' % (loadcase_id, M_expected, M1)) loadcase_id = 6 F1, M1 = sum_forces_moments(model, p0, loadcase_id, include_grav=False) F2, M2 = sum_forces_moments_elements(model, p0, loadcase_id, eids, nids, include_grav=False) assert np.allclose(F1, F2), 'F1=%s F2=%s' % (F1, F2) assert np.allclose(M1, M2), 'M1=%s M2=%s' % (M1, M2) F_expected = array([0., 0., 300.]) M_expected = array([1500., -1500., 0.]) F_expected *= 7. * 5. M_expected *= 7. * 5. self.assertTrue( allclose(F_expected, F1), 'loadcase_id=%s F_expected=%s F1=%s' % (loadcase_id, F_expected, F1)) self.assertTrue( allclose(M_expected, M1), 'loadcase_id=%s M_expected=%s M1=%s' % (loadcase_id, M_expected, M1)) #--------- loadcase_id = 11 A_expected = 4. A = 4. p = 3. #Fi = p * A element = model.elements[1] normal = element.Normal() normal_expected = array([0., 0., 1.]) self.assertTrue( allclose(normal_expected, normal), 'loadcase_id=%s normal_expected=%s normal=%s' % (loadcase_id, normal_expected, normal)) F1, M1 = sum_forces_moments(model, p0, loadcase_id, include_grav=False) F2, M2 = sum_forces_moments_elements(model, p0, loadcase_id, eids, nids, include_grav=False) assert np.allclose(F1, F2), 'F1=%s F2=%s' % (F1, F2) assert np.allclose(M1, M2), 'M1=%s M2=%s' % (M1, M2) self.assertTrue( allclose(p * A, F1[2]), 'loadcase_id=%s p*A=%s F1=%s' % (loadcase_id, p * A, F1)) F_expected = array([0., 0., 12.]) M_expected = array([12., -12., 0.]) self.assertTrue( allclose(F_expected, F1), 'loadcase_id=%s F_expected=%s F1=%s' % (loadcase_id, F_expected, F1)) self.assertTrue( allclose(M_expected, M1), 'loadcase_id=%s M_expected=%s M1=%s' % (loadcase_id, M_expected, M1))