def test_bdf_utils_02(self): msg = 'n 1:10 14:20:2 50:40:-1 e 10 20' expected_nodes = np.array( [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 14, 16, 18, 20, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50] ) expected_elements = np.array([10, 20]) output_dict = parse_patran_syntax_dict(msg, pound_dict=None) assert np.array_equal(output_dict['n'], expected_nodes) assert np.array_equal(output_dict['e'], expected_elements) # messing with the order a bit msg = 'n 1:# e 2:#:4 junk 1 7 12:#:2 3' expected_nodes = np.array([1, 2, 3, 4, 5]) expected_elements = np.array([2, 6, 10, 14]) expected_junk = np.array([1, 3, 7, 12, 14, 16, 18, 20]) pound_dict = { 'n' : 5, 'e' : 14, 'junk' : 20., } output_dict = parse_patran_syntax_dict(msg, pound_dict=pound_dict) assert np.array_equal(output_dict['n'], expected_nodes) assert np.array_equal(output_dict['e'], expected_elements) error_msg = 'expected equal; A-B=%s; B-A=%s' % ( np.setdiff1d(expected_junk, output_dict['junk']), np.setdiff1d(output_dict['junk'], expected_junk)) assert np.array_equal(output_dict['junk'], expected_junk), error_msg
def test_bdf_utils_02(self): """tests parse_patran_syntax_dict""" msg = 'n 1:10 14:20:2 50:40:-1 e 10 20' expected_nodes = np.array( [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 14, 16, 18, 20, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50] ) expected_elements = np.array([10, 20]) output_dict = parse_patran_syntax_dict(msg, pound_dict=None) assert np.array_equal(output_dict['n'], expected_nodes) assert np.array_equal(output_dict['e'], expected_elements) # messing with the order a bit msg = 'n 1:# e 2:#:4 junk 1 7 12:#:2 3' expected_nodes = np.array([1, 2, 3, 4, 5]) expected_elements = np.array([2, 6, 10, 14]) expected_junk = np.array([1, 3, 7, 12, 14, 16, 18, 20]) pound_dict = { 'n' : 5, 'e' : 14, 'junk' : 20., } output_dict = parse_patran_syntax_dict(msg, pound_dict=pound_dict) assert np.array_equal(output_dict['n'], expected_nodes) assert np.array_equal(output_dict['e'], expected_elements) error_msg = 'expected equal; A-B=%s; B-A=%s' % ( np.setdiff1d(expected_junk, output_dict['junk']), np.setdiff1d(output_dict['junk'], expected_junk)) assert np.array_equal(output_dict['junk'], expected_junk), error_msg msg = write_patran_syntax_dict({'e' : [2, 6, 10, 14]}) assert msg == 'e 2:14:4', 'msg=%r' % msg msg = write_patran_syntax_dict({'e' : [1, 2, 6, 10, 14]}) assert msg == 'e 1 2 6:14:4', 'msg=%r' % msg msg = write_patran_syntax_dict( { 'n' : [1, 2, 6, 10, 14], 'e' : [1, 2, 6, 10, 14], }, ) assert msg == 'e 1 2 6:14:4 n 1 2 6:14:4', 'msg=%r' % msg out = parse_patran_syntax_dict('') assert len(out) == 0, 'out=%s' % out
def main(): # pragma: no cover bdf = None #op2_filename = 'model.op2' op2 = read_op2(op2_filename=None, combine=True, log=None, debug=True, debug_file=None, build_dataframe=False, skip_undefined_matrices=True, mode='msc') subcases = [1] groups = { 1: 'Elm 403082 565514 403084 552195 552196 553965 552204', } eid_groups = [] results = {} for key, group in sorted(groups.items()): eid_group = parse_patran_syntax_dict(group, pound_dict=None)['Elm'] eid_groups.append(eid_group) del groups centroid_file = open('centroid.csv', 'w') centroid_file.write('group, subcase, eid_max, maxp, eid_min, minp\n') for group_id, eids in enumerate(eid_groups): # TODO: speed this up by using the same indices for subcase in subcases: eid_max, maxp, eid_min, minp = get_centroid_max_min_principal_stress( bdf, op2, subcase, eids) centroid_file.write('%s, %s, %s, %s, %s, %s\n' % (group, subcase, eid_max, maxp, eid_min, minp)) cat('centroid.csv')
def test_bdf_utils_03(self): """tests parse_patran_syntax_dict""" node_sets = "e 1:3 n 2:6:2 Node 10:13 N 15 coord 1:10" type_map = { 'n': 'Node', 'Node': 'Node', 'e': 'Element', 'Elm': 'Element', 'Element': 'Element', } data = parse_patran_syntax_dict(node_sets, type_map) data_expected = { 'Element': np.array([1, 2, 3]), 'Node': np.array([2, 4, 6, 10, 11, 12, 13, 15]), } data = parse_patran_syntax_dict_map(node_sets, type_map, msg='') assert len(data.keys()) == len( data_expected.keys()), 'data.keys=%s data_expected.keys=%s' % ( data.keys(), data_expected.keys()) for key, value in sorted(data.items()): assert key in data_expected, 'cant find key=%r' % key value_expected = data_expected[key] assert np.array_equal( value, value_expected), 'key=%r\nvalue=%r\nexpected=%r' % ( key, value, value_expected)
def main(): print('main...') bdf = None op2_filename = 'model.op2' op2 = read_op2(op2_filename=None, combine=True, log=None, debug=True, debug_file=None, build_dataframe=False, skip_undefined_matrices=True, mode='msc') subcases = [1] groups = { 1 : 'Elm 403082 565514 403084 552195 552196 553965 552204', } eid_groups = {} results = {} for key, group in sorted(groups.items()): eid_group = parse_patran_syntax_dict(group, pound_dict=None)['Elm'] eid_groups.append(eid_group) del groups centroid_file = open('centroid.csv', 'w') centroid_file.write('group, subcase, eid_max, maxp, eid_min, minp\n') for group_id, eids in enumerate(eid_groups): # TODO: speed this up by using the same indices for subcase in subcases: eid_max, maxp, eid_min, minp = get_centroid_max_min_principal_stress(bdf, op2, subcase, eids) centroid_file.write('%s, %s, %s, %s, %s, %s\n' % ( group, subcase, eid_max, maxp, eid_min, minp)) cat('centroid.csv')
def check_patran_syntax_dict(cell, pound=None): text = str(cell.text()) try: value = parse_patran_syntax_dict(text) cell.setStyleSheet("QLineEdit{background: white;}") cell.setToolTip('') return value, True except (ValueError, SyntaxError, KeyError) as e: cell.setStyleSheet("QLineEdit{background: red;}") cell.setToolTip(str(e)) return None, False
def check_patran_syntax_dict(self, cell, pound=None): text = str(cell.text()) try: value = parse_patran_syntax_dict(text) cell.setStyleSheet("QLineEdit{background: white;}") cell.setToolTip('') return value, True except (ValueError, SyntaxError, KeyError) as e: cell.setStyleSheet("QLineEdit{background: red;}") cell.setToolTip(str(e)) return None, False
def main(): """the test case""" eids = parse_patran_syntax_dict(' Element 830:84798')['Element'] eids = find_coplanar_elements(bdf_filename, eids)