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();
}
Beispiel #2
0
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;
}
Beispiel #3
0
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);
  }
  */
  
}
Beispiel #4
0
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]) ;
   }
}
Beispiel #5
0
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) ;
}