def write_skin_solid_faces(self, skin_filename, write_solids=False, write_shells=True, size=8, is_double=False, encoding=None): """ Writes the skinned elements Parameters ---------- skin_filename : str the file to write write_solids : bool; default=False write solid elements that have skinned faces write_shells : bool; default=False write newly created shell elements if there are shells in the model, doesn't write these size : int; default=8 the field width is_double : bool; default=False double precision flag encoding : str; default=None -> system default the string encoding """ self.deprecated( 'model.write_skin_solid_faces(...)', 'from pyNastran.bdf.mesh_utils.skin_solid_elements import write_skin_solid_faces\n' 'write_skin_solid_faces(model, ...)', '1.3') write_skin_solid_faces( self, skin_filename, write_solids=write_solids, write_shells=write_shells, size=size, is_double=is_double, encoding=encoding)
def write_skin_solid_faces(self, skin_filename, write_solids=False, write_shells=True, size=8, is_double=False, encoding=None): """ Writes the skinned elements Parameters ---------- skin_filename : str the file to write write_solids : bool; default=False write solid elements that have skinned faces write_shells : bool; default=False write newly created shell elements if there are shells in the model, doesn't write these size : int; default=8 the field width is_double : bool; default=False double precision flag encoding : str; default=None -> system default the string encoding """ return write_skin_solid_faces(self, skin_filename, write_solids=write_solids, write_shells=write_shells, size=size, is_double=is_double, encoding=encoding)
def test_nastran_to_ugrid_01(self): bdf_filename = os.path.join(MODEL_PATH, 'solid_bending', 'solid_bending.bdf') size = 8 debug = False log = get_logger(log=None, level='warning', encoding='utf-8') model = read_bdf(bdf_filename, log=log, debug=debug) #log = model.log #model.get_element_faces() skin_bdf_filename = os.path.join(MODEL_PATH, 'solid_bending', 'solid_skin.bdf') write_skin_solid_faces(model, skin_bdf_filename, write_solids=True, write_shells=True, size=size, is_double=False, encoding=None) bdf_model = read_bdf(skin_bdf_filename, log=log, debug=debug) ugrid_filename_out = os.path.join(MODEL_PATH, 'solid_bending', 'solid_skin.b8.ugrid') ugrid_filename_out2 = os.path.join(MODEL_PATH, 'solid_bending', 'solid_skin2.b8.ugrid') nastran_to_ugrid(bdf_model, ugrid_filename_out, properties=None, check_shells=True, check_solids=True) ugrid = read_ugrid(ugrid_filename_out, encoding=None, log=log, debug=debug) skin_bdf_filename2 = os.path.join(MODEL_PATH, 'solid_bending', 'solid_skin2.bdf') skin_cart3d_filename = os.path.join(MODEL_PATH, 'solid_bending', 'solid_skin2.tri') skin_cart3d_filename3 = os.path.join(MODEL_PATH, 'solid_bending', 'solid_skin3.tri') skin_stl_filename3 = os.path.join(MODEL_PATH, 'solid_bending', 'solid_skin3.stl') #msg += " format_converter nastran <INPUT> <format2> <OUTPUT> [-o <OP2>] --no_xref\n" #msg += " format_converter <format1> <INPUT> tecplot <OUTPUT> [-r RESTYPE...] [-b] [--block] [-x <X>] [-y <Y>] [-z <Z>] [--scale SCALE]\n" #msg += " format_converter <format1> <INPUT> stl <OUTPUT> [-b] [--scale SCALE]\n" #msg += " format_converter cart3d <INPUT> <format2> <OUTPUT> [-b] [--scale SCALE]\n" #msg += " format_converter <format1> <INPUT> <format2> <OUTPUT> [--scale SCALE]\n" argv = ['format_converter', 'nastran', bdf_filename, 'ugrid', ugrid_filename_out2] with self.assertRaises(RuntimeError): cmd_line_format_converter(argv=argv, quiet=True) #argv = ['format_converter', 'nastran', bdf_filename, 'cart3d', skin_cart3d_filename3] #cmd_line_format_converter(argv=argv) #argv = ['format_converter', 'nastran', bdf_filename, 'stl', skin_stl_filename3] #cmd_line_format_converter(argv=argv) ugrid.write_bdf(skin_bdf_filename2, include_shells=True, include_solids=True, convert_pyram_to_penta=True, encoding=None, size=size, is_double=False) read_bdf(skin_bdf_filename2, log=log, debug=debug) with self.assertRaises(AssertionError): nastran_to_cart3d_filename(skin_bdf_filename2, skin_cart3d_filename) ugrid.write_bdf(skin_bdf_filename2, include_shells=True, include_solids=False, convert_pyram_to_penta=True, encoding=None, size=size, is_double=False) nastran_to_cart3d_filename(skin_bdf_filename2, skin_cart3d_filename) read_cart3d(skin_cart3d_filename, log=log) os.remove(ugrid_filename_out) os.remove(skin_bdf_filename) os.remove(skin_bdf_filename2) os.remove(skin_cart3d_filename)
def run_fem1(fem1, bdf_model, out_model, mesh_form, xref, punch, sum_load, size, is_double, run_extract_bodies=False, encoding=None, crash_cards=None, safe_xref=True, pickle_obj=False, stop=False): """ Reads/writes the BDF Parameters ---------- fem1 : BDF() The BDF object bdf_model : str The root path of the bdf filename out_model : str The path to the output bdf mesh_form : str {combined, separate} 'combined' : interspersed=True 'separate' : interspersed=False xref : bool The xref mode punch : bool punch flag sum_load : bool static load sum flag size : int, {8, 16} size flag is_double : bool double flag safe_xref : bool; default=False ??? run_extract_bodies : bool; default=False isolate the fem bodies; typically 1 body; code is still buggy encoding : str; default=None the file encoding crash_cards : ??? ??? """ if crash_cards is None: crash_cards = [] check_path(bdf_model, 'bdf_model') try: if '.pch' in bdf_model: fem1.read_bdf(bdf_model, xref=False, punch=True, encoding=encoding) else: fem1.read_bdf(bdf_model, xref=False, punch=punch, encoding=encoding) for card in crash_cards: if card in fem1.card_count: raise DisabledCardError('card=%r has been disabled' % card) #fem1.geom_check(geom_check=True, xref=False) if not stop and not xref: skin_filename = 'skin_file.bdf' write_skin_solid_faces(fem1, skin_filename, size=16, is_double=False) if os.path.exists(skin_filename): read_bdf(skin_filename, log=fem1.log) os.remove(skin_filename) if xref: #if run_extract_bodies: #extract_bodies(fem1) # 1. testing that these methods word without xref #fem1._get_rigid() #get_dependent_nid_to_components(fem1) #fem1._get_maps(eids=None, map_names=None, #consider_0d=True, consider_0d_rigid=True, #consider_1d=True, consider_2d=True, consider_3d=True) #get_dependent_nid_to_components(fem1) # 1. testing that these methods work with xref fem1._get_rigid() #common_node_ids = list(fem1.nodes.keys()) #fem1.get_rigid_elements_with_node_ids(common_node_ids) #for spc_id in set(list(fem1.spcadds.keys()) + list(fem1.spcs.keys())): #fem1.get_reduced_spcs(spc_id) #for mpc_id in set(list(fem1.mpcadds.keys()) + list(fem1.mpcs.keys())): #fem1.get_reduced_mpcs(mpc_id) #get_dependent_nid_to_components(fem1) #fem1._get_maps(eids=None, map_names=None, #consider_0d=True, consider_0d_rigid=True, #consider_1d=True, consider_2d=True, consider_3d=True) #get_dependent_nid_to_components(fem1) #fem1.get_pid_to_node_ids_and_elements_array(pids=None, etypes=None, idtype='int32', #msg=' which is required by test_bdf') #fem1.get_property_id_to_element_ids_map(msg=' which is required by test_bdf') #fem1.get_material_id_to_property_ids_map(msg=' which is required by test_bdf') #fem1.get_element_ids_list_with_pids(pids=None) #fem1.get_element_ids_dict_with_pids(pids=None, stop_if_no_eids=False, #msg=' which is required by test_bdf') #fem1.get_node_id_to_element_ids_map() #fem1.get_node_id_to_elements_map() read_bdf(fem1.bdf_filename, encoding=encoding, debug=fem1.debug, log=fem1.log) fem1 = remake_model(bdf_model, fem1, pickle_obj) #fem1.geom_check(geom_check=True, xref=True) except: print("failed reading %r" % bdf_model) raise #out_model = bdf_model + '_out' #if cid is not None and xref: #fem1.resolve_grids(cid=cid) if mesh_form is None: pass elif mesh_form == 'combined': fem1.write_bdf(out_model, interspersed=True, size=size, is_double=is_double) elif mesh_form == 'separate': fem1.write_bdf(out_model, interspersed=False, size=size, is_double=is_double) else: msg = "mesh_form=%r; allowed_mesh_forms=['combined','separate']" % mesh_form raise NotImplementedError(msg) #fem1.write_as_ctria3(out_model) fem1._get_maps() #remove_unused_materials(fem1) #remove_unused(fem1) #units_to = ['m', 'kg', 's'] #units_from = ['m', 'kg', 's'] #convert(fem1, units_to, units=units_from) if xref: check_for_cd_frame(fem1) #try: #fem1.get_area_breakdown() #fem1.get_volume_breakdown() #except: #if len(fem1.masses) > 0: #fem1.log.warning('no elements with area/volume found, but elements with mass were') #else: #fem1.log.warning('no elements found') #if len(fem1.elements) + len(fem1.masses) > 0: #try: #fem1.get_mass_breakdown() #except RuntimeError: #fem1.log.warning('no elements with mass found') return fem1