def _grid2_from_id(gid): from hybmeshpack.hmcore import g2 from hybmeshpack.gdata.grid2 import Grid2 if not isinstance(gid, list): return flow.receiver.get_grid2(gid) else: ret = map(flow.receiver.get_grid2, gid) cd = g2.concatenate([r.cdata for r in ret]) return Grid2(cd)
def _addrem_grid2(self): cbtot = self.ask_for_callback() base = self.grid2_by_name(self.get_option('grid_name')) clist = self.get_option('cont_names') for i, cname in enumerate(clist): cb = cbtot.subcallback(i, len(clist)) cont = self.any_cont_by_name(cname) res = g2core.grid_excl_cont(base.cdata, cont.cdata, self.get_option('is_inner'), cb) base = Grid2(res) return [(base, self.get_option('name'))], []
def flow_and_framework_fromfile(filename, flow, cb=None): doc, root, statenodes = 0, 0, [] try: cb.pycall("Loading commands", "Reading xml", 0, 0) doc, root = hmxml.open_doc(filename) pstring = hmxml.purged_string(doc) pyside_root = ET.fromstring(pstring) pyside_flownode = pyside_root.findall('FLOW') if len(pyside_flownode) == 0: raise Exception('No proper data in xml file') else: pyside_flownode = pyside_flownode[0] # load commands cb.pycall("Loading commands", "Parsing", 0.5, 0) _load_command_flow(flow, pyside_flownode) cb.pycall("Loading commands", "Done", 1, 1) # state statenodes = hmxml.query(root, "FLOW/STATE") pyside_statenode = pyside_flownode.findall('STATE') if len(statenodes) > 0: statenode = statenodes[0] pyside_statenode = pyside_statenode[0] else: statenode = None pyside_statenode = None data = framework.Framework() if statenode is not None: # load boundary types _load_btypes(data, pyside_statenode) # load data c, g, s3, g3, cn, gn, s3n, g3n =\ native_import.all_geom(doc, statenode, cb) for k, v in zip(cn, c): data.append_contour2(Contour2(v), k) for k, v in zip(gn, g): data.append_grid2(Grid2(v), k) for k, v in zip(s3n, s3): data.append_surface3(Surface3(v), k) for k, v in zip(g3n, g3): data.append_grid3(Grid3(v), k) flow.set_receiver(data) except: raise finally: hmxml.close_doc(doc, [root] + statenodes)
def _addrem_grid2(self): cbtotal = self.ask_for_callback() imax = len(self.get_option('plus')) wg, _ = self.__get_grid(0) for i in range(1, imax + 1): cb = cbtotal.subcallback(i - 1, imax) g, b = self.__get_grid(i) ret = g2core.unite_grids(wg.cdata, g.cdata, b, self.get_option('fix_bnd'), self.get_option('empty_holes'), self.get_option('angle0'), self.get_option('filler'), cb) wg = Grid2(ret) return [(wg, self.get_option('name'))], []
def _addrem_objects(self): self.__check_file_existance() g2list, c2list, g3list, s3list = [], [], [], [] self._init_read() c2 = self._read_cont2() g2 = self._read_grid2() s3 = self._read_surf3() g3 = self._read_grid3() self._fin_read() for i, c in enumerate(c2): c2list.append((Contour2(c), self._c2name(i))) for i, c in enumerate(g2): g2list.append((Grid2(c), self._g2name(i))) for i, c in enumerate(s3): s3list.append((Surface3(c), self._s3name(i))) for i, c in enumerate(g3): g3list.append((Grid3(c), self._g3name(i))) return g2list, [], c2list, [], g3list, [], s3list, []
def __convex_cells(self, og, angle): ret = g2core.convex_cells(og.cdata, angle) return Grid2(ret)
def __simplify_bnd(self, og, angle): ret = g2core.simplify_grid_boundary(og.cdata, angle) return Grid2(ret)
def _addrem_grid2(self): g = self._build_grid() if g is not None: return [(Grid2(g), self.get_option('name'))], [] else: return [], []