#include #include "moabg2.hxx" #include "g2.h" #include "g2_X11.h" #include "g2_FIG.h" #include "g2_PS.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include "Mesquite_all_headers.hpp" #include /** Macro used to return if MOAB operation failed */ #define RINS(ierr) \ do { \ if (MB_SUCCESS != ierr) {\ return ierr; \ }\ } while(0) int main(int argc, char *argv[]) { MBiMesh mesh; MBErrorCode ierr = MB_FAILURE; char *filename = NULL; int colors[] = {20, 8, 4, 6, 14, 23, 20, 16}; ON::Begin(); if (argc > 1) { filename = argv[1]; ierr = mesh.load_mesh(filename); if (MB_SUCCESS != ierr); } int npt; ierr = mesh.get_number_entities_by_type(0,MBENTITYSET, npt); RINS(ierr); printf("Number of subsets : %d\n", npt); int width = 500; int height = 500; int xdrv = g2_open_X11(width, height); moabg2_Viewer viewer(xdrv, width, height, 20); viewer.setup_view(&mesh); MBRange subdomains; MBTag partTag; int td; mesh.tag_get_handle("PARALLEL_PARTITION", partTag); mesh.get_entities_by_type_and_tag(0, MBENTITYSET, &partTag, 0, 1, subdomains, MBInterface::UNION); assert(2 == subdomains.size()); MBEntityHandle s1 = subdomains[0]; MBEntityHandle s2 = subdomains[1]; viewer.set_elem_ink(20); viewer.meshset(&mesh, s1); viewer.set_elem_ink(17); viewer.meshset(&mesh, s2); MBSkinner skinner(&mesh); MBRange bedges1; MBRange bedges2; MBRange elems; elems.clear(); mesh.get_entities_by_dimension(s2, 2, elems); //skinner.find_skin(elems, false, bedges2); skinner.find_skin(elems, false, bedges2, 0, true, true); viewer.set_edge_ink(19); viewer.set_line_width(8); viewer.edges(&mesh, bedges2); elems.clear(); MBRange dummy; mesh.get_entities_by_dimension(s1, 2, elems); //skinner.find_skin(elems, false, bedges1); skinner.find_skin(elems, false, bedges1, 0, true, true); MBRange sharedEdges = intersect(bedges1, bedges2); viewer.set_edge_ink(1); viewer.set_line_width(4); viewer.edges(&mesh, sharedEdges); moabg2_EventHandler handler1; viewer.handle_events(handler1); return EXIT_SUCCESS; moab_fail: std::string error_msg = mesh.get_error_string(ierr); std::cerr << "Error: " << error_msg << "\n"; return EXIT_FAILURE; }