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(); }
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 partfacecreate( nglib::Ng_Mesh *mesh1, nglib::Ng_Mesh *submesh, int numprocs, int mypid) { map< int, FaceInfo >::iterator itf ; map< int, int > ::iterator itv ; int fid ; FaceInfo finfo ; Face f ; int lsvrtx[3] ; int pid, i ; double xyz[3] ; Barycentric barycv ; vrtxcount = 0 ; // add vertices to mesh for (itf=facemap.begin(); itf != facemap.end(); ++itf) { fid = itf->first ; finfo = itf->second ; // insert face vertices into verts map for(int j=0 ; j < 2 ; j++) { pid = finfo.procids[j] ; if ( pid == mypid ) { for(int k=0 ; k < 3 ; k++) { itv = g2lvrtxmap.find(finfo.svrtx[j][k]); if( itv == g2lvrtxmap.end() ) { vrtxcount++ ; g2lvrtxmap[finfo.svrtx[j][k]] = vrtxcount ; barycv = initbarycv(finfo.svrtx[j][k]) ; baryc2locvrtxmap[barycv] = vrtxcount ; Ng_GetPoint(mesh1,finfo.svrtx[j][k],xyz) ; Ng_AddPoint(submesh,xyz); } } } } } // add surface elements to mesh for (itf=facemap.begin(); itf != facemap.end(); ++itf) { fid = itf->first ; finfo = itf->second ; for(int j=0 ; j < 2 ; j++) { pid = finfo.procids[j] ; if ( pid == mypid ) { f.outw = finfo.outw ; //printf("GETTING BOUNDARY ID OF %d, j %d pid %d\n", fid,j,pid); //int boundaryID = GetBoundaryID(mesh1, fid); //printf("BOUNDARY ID OF %d is %d\n", fid, boundaryID); f.geoboundary = (finfo.procids[1] == -1) ? 1 : 0 ; //f.geoboundary = (finfo.procids[(j+1)%2] != -1) ? 1 : 0 ; f.lsvrtx[0] = g2lvrtxmap[finfo.svrtx[j][0]] ; f.lsvrtx[1] = g2lvrtxmap[finfo.svrtx[j][1]] ; f.lsvrtx[2] = g2lvrtxmap[finfo.svrtx[j][2]] ; f.barycv[0] = initbarycv(finfo.svrtx[j][0]) ; f.barycv[1] = initbarycv(finfo.svrtx[j][1]) ; f.barycv[2] = initbarycv(finfo.svrtx[j][2]) ; //printf("MY: addsurfel: %d : %d %d %d\n",pid,f.lsvrtx[0],f.lsvrtx[1],f.lsvrtx[2]) ; //if (f.geoboundary == 1) { int geo = findSurfElem(mesh1, finfo.svrtx[j]); f.geoboundary = geo; //printf("BOUNDARY ID OF %d, SETTING GEO TO %d, elmts %d %d %d, finfp.procids[0]: %d finfo.procids[1]: %d\n", fid, f.geoboundary, finfo.svrtx[j][0], finfo.svrtx[j][1], finfo.svrtx[j][2], finfo.procids[0], finfo.procids[1]); //} newfaces.push_back(f) ; } } } }