void MyDeformObject::initialization(Ng_Mesh * grid) { number_point = Ng_GetNP(grid); number_element = Ng_GetNSE(grid); ///get memory p_data_point = new double *[number_point]; for (int i = 0; i < number_point; ++i) { p_data_point[i] = new double[3]; } p_data_element = new int *[number_element]; for (int i = 0; i < number_element; ++i) { p_data_element[i] = new int[4]; } p_analytic_intensy = new double[x_pic_deform * y_pic_deform]; p_interpolate_intensy = new double[x_pic_deform * y_pic_deform]; p_source_intensy = new double[x_pic_source * y_pic_source]; ///End get memory for (int i = 0; i < number_point; ++i) { Ng_GetPoint(grid, (i + 1), p_data_point[i]); // qDebug() << p_data_point[i][0] << p_data_point[i][1]; } for (int i = 0; i < number_element; ++i) { Ng_GetSurfaceElement(grid, (i + 1), p_data_element[i]); for (int j = 0; j < 4; ++j) { p_data_element[i][j] --; } // qDebug() << p_data_element[i][0] << p_data_element[i][1] << p_data_element[i][2]; } x_src_size = 2.0; y_src_size = 2.0; x_deform = 1.3; y_deform = 0.9; x_dfrm_size = x_src_size * x_deform; y_dfrm_size = y_src_size * y_deform; vectr_x << 0.0, (x_dfrm_size / 2.0), x_dfrm_size, 0.0, (x_dfrm_size / 2.0), x_dfrm_size, 0.0, (x_dfrm_size / 2.0), x_dfrm_size; vectr_X << 0.0, (x_src_size / 2.0), x_src_size, 0.0, (x_src_size / 2.0), x_src_size, 0.0, (x_src_size / 2.0), x_src_size; vectr_y << 0.0, (y_src_size - y_dfrm_size), 0.0, (y_src_size / 2.0), (y_src_size / 2.0), (y_src_size / 2.0), y_src_size, y_dfrm_size, y_src_size; vectr_Y << 0.0, 0.0, 0.0, (y_src_size / 2.0), (y_src_size / 2.0), (y_src_size / 2.0), y_src_size, y_src_size, y_src_size; calcCoefSourcCoord(); }
int findSurfElem( nglib::Ng_Mesh *mesh, int *elem) { int nse = Ng_GetNSE(mesh); //printf("---- SEARCHING FOR %d %d %d\n",elem[0], elem[1], elem[2]); sort(elem, elem + 3); FacePoints fp; fp.p[0] = elem[0]; fp.p[1] = elem[1]; fp.p[2] = elem[2]; surfMap_t::const_iterator it = surfMap.find(fp); if (it == surfMap.end()) return -1; else return it->second; }
void getSurfPoints( nglib::Ng_Mesh *mesh) { int nse = Ng_GetNSE(mesh); int *surfpoints = new int[3]; for (int i = 0; i < nse; i++) { Ng_GetSurfaceElement(mesh, i+1, surfpoints); FacePoints fp; sort(surfpoints, surfpoints + 3); fp.p[0] = surfpoints[0]; fp.p[1] = surfpoints[1]; fp.p[2] = surfpoints[2]; surfMap[fp] = GetBoundaryID(mesh, i + 1); } /* int i = 1; for (mymap::const_iterator it = surfMap.begin(); it != surfMap.end(); ++it) { printf("SURF: %d: %d %d %d\n",i++, it->first.x, it->first.y, it->second); } */ }
void cre_geom_surf_mesh( nglib::Ng_Mesh *mesh1, nglib::Ng_Mesh *mesh2) { int np = Ng_GetNP(mesh1) ; int nse = Ng_GetNSE(mesh1) ; double xyz[3] ; int entity[4] ; // printf("%d %d\n",np,nse) ; for(int i=1 ; i <= np ; i++) { Ng_GetPoint (mesh1,i,xyz) ; Ng_AddPoint (mesh2,xyz); // printf("%lf %lf %lf\n",xyz[0],xyz[1],xyz[2]) ; } for(int i=1 ; i <= nse ; i++) { Ng_GetSurfaceElement(mesh1,i,entity) ; Ng_AddSurfaceElement(mesh2,nglib::NG_TRIG,entity); // printf("%d %d %d\n",entity[0],entity[1],entity[2]) ; } }
void cre_part_surf_mesh( nglib::Ng_Mesh *mesh1, int numprocs, int mypid, nglib::Ng_Mesh *submesh) { int fids[4] ; int vrts[4] ; int orient[4] ; int p,i,k,elemno ; FaceInfo finfo ; int ne ; getSurfPoints(mesh1); int nse = Ng_GetNSE(mesh1); // for (int i = 0; i < nse; i++) { // printf("SURF: %d: %d %d %d\n",i+1, surfpoints[i][0], surfpoints[i][1], surfpoints[i][2]); // } ne = Ng_GetNE(mesh1) ; for(elemno=1 ; elemno <= ne ; elemno++) { p = edest[elemno-1] ; if (netgenmeshupdate) printf("MY: starting update\n") ; My_Ng_GetElement_Faces(mesh1,elemno,fids,orient,netgenmeshupdate); //Ng_GetVolumeElement(mesh1, elemno, fids); //printf("YYY got element faces of %d : %d %d %d %d\n", elemno, fids[0], fids[1], fids[2], fids[3]); netgenmeshupdate = false; //if (netgenmeshupdate) printf("MY: finishing update\n") ; Ng_GetVolumeElement(mesh1,elemno,vrts) ; //printf("YYY got element points of %d : %d %d %d %d\n", elemno, vrts[0], vrts[1], vrts[2], vrts[3]); for(k=0 ; k < 4 ; k++) { insertetra2map(mesh1,fids[k],p,vrts) ; } } partfacecreate(mesh1,submesh,numprocs,mypid) ; }