示例#1
0
    void create_section(int type, int idx, int n_elements, int n_faces=0)
    {
      __error__( n_elements==0, "n_elements==0");

      fvm_element_t cell = (fvm_element_t) type;  
      CsMesh->sections[idx]             = fvm_nodal_section_create( cell );     // creating 'section type cell' 
      CsMesh->sections[idx]->n_elements = n_elements;                           // setting  'n_elements'
      CsMesh->sections[idx]->n_faces    = n_faces;                              // Number of faces defining polyhedra

      int stride = -1;
      int connectivity_size = -1;  
      if(n_faces == 0)
      {
        stride            = CsMesh->sections[idx]->stride;                    // <- fvm_nodal_n_vertices_element[type] (fvm_nodal_section_create)
        connectivity_size = stride * n_elements;
        CsMesh->sections[idx]->connectivity_size = connectivity_size;             // setting 'connectivity_size = n_elements * nodal_n_vertices_element'
      }

      if(_debug) 
        cout<<" [create_section] '" << CS_DICT[ type] 
            <<", n_elements='"<< n_elements <<"'"
            <<", n_faces='"<< n_faces <<"'"
            <<", connectivity_size='"<< connectivity_size <<"'"
            <<" \n"; 
    }
示例#2
0
    void allocate_regular_section(int idx, int* elements) 
    {
      __error__(!(0 < idx < CsMesh->n_sections), "0 < idx <= CsMesh->n_sections");
      __error__( elements==NULL, "elements==NULL");
 
      int connectivity_size = -1;  

      if( (CsMesh->sections[idx]->n_faces == 0) )
      {
        connectivity_size = CsMesh->sections[idx]->connectivity_size;   
        CsMesh->sections[idx]->_vertex_num = new cs_lnum_t[ connectivity_size ];
        CsMesh->sections[idx]->vertex_num  = CsMesh->sections[idx]->_vertex_num;

        for(int j=0; j<connectivity_size; j++)  CsMesh->sections[idx]->_vertex_num[j] = elements[j]; // fill section with the vertices from cell i  
      }

      if(_debug)
        cout<<" [allocate_regular_section] '"<<" idx='"<< idx <<"'"
            <<", connectivity_size='"<< connectivity_size <<"'"
            <<" \n";

    }
示例#3
0
    void allocate_coords( void* coords )
    {
      __error__( coords==NULL, "coords==NULL");

      int n_coords = CsMesh->n_vertices;
      int n_dims   = CsMesh->dim;

      CsMesh->_vertex_coords = new cs_coord_t[n_dims * n_coords];
      CsMesh->vertex_coords = CsMesh->_vertex_coords;

      cs_coord_t* l_coords = (cs_coord_t*) coords;
      for(int i=0; i < n_dims*n_coords; i++) CsMesh->_vertex_coords[i] = l_coords[i];
    }
示例#4
0
    void create_sections( int n_sections, int n_coords )
    {
      __error__( n_coords==0, "n_coords==0");

      CsMesh->n_vertices = n_coords;
      CsMesh->n_sections = n_sections;
      CsMesh->sections   = (fvm_nodal_section_t**) malloc( n_sections );

      if(_debug)
        cout<<" [create_sections] '" 
            <<", n_sections='"<< n_sections <<"'"
            <<", n_coords='"<< n_coords <<"'"
            <<" \n";
    }
示例#5
0
    void allocate_irregular_section(int  idx, 
                                    int  n_vertices,
                                    int *vertex_num,   
                                    int *vertex_index, 
                                    int *face_num,  
                                    int *face_index     
                                   ) 
    {
      __error__(!(0 < idx < CsMesh->n_sections), "0 < idx <= CsMesh->n_sections");
      __error__(   (face_index==NULL)||(face_num==NULL)  ,   "face_XXX==NULL");
      __error__( (vertex_index==NULL)||(vertex_num==NULL), "vertex_XXX==NULL");


      // fvm/fvm_nodal.c:        fvm_nodal_section_copy_on_write
      // fvm/fvm_nodal_append.c: _transfer_to_section 

      // 'faces_index'.  size: n_elements + 1 
      int n_elements  = CsMesh->sections[idx]->n_elements;
      int n_faces     = CsMesh->sections[idx]->n_faces;

      if(n_faces > 0) 
      {
        __error__( n_vertices==0, "n_vertices==0");
        __error__( n_vertices!= vertex_index[n_faces], "n_vertices!= vertex_index[n_faces]"); 

        // 'face_index'.   size: n_elements +1 
        CsMesh->sections[idx]->_face_index   = new cs_lnum_t[n_elements + 1];  
        CsMesh->sections[idx]->face_index    = CsMesh->sections[idx]->_face_index;
        for(int j=0; j<n_elements + 1; j++)  CsMesh->sections[idx]->_face_index[j] = face_index[j]; 

        // 'faces_num'.    size: n_faces  
        CsMesh->sections[idx]->_face_num     = new cs_lnum_t[n_faces]; 
        CsMesh->sections[idx]->face_num      = CsMesh->sections[idx]->_face_num;
        for(int j=0; j<n_faces; j++)  CsMesh->sections[idx]->_face_num[j] = face_num[j]; 

        // 'vertex_index'. size: n_faces+1  
        CsMesh->sections[idx]->_vertex_index = new cs_lnum_t[n_faces + 1]; 
        CsMesh->sections[idx]->vertex_index  = CsMesh->sections[idx]->_vertex_index;
        for(int j=0; j<n_faces+1; j++)  CsMesh->sections[idx]->_vertex_index[j] = vertex_index[j];           

        // 'vertex_num'.   size: n_vertices 
        CsMesh->sections[idx]->_vertex_num   = new cs_lnum_t[n_vertices];
        CsMesh->sections[idx]->vertex_num    = CsMesh->sections[idx]->_vertex_num;
        for(int j=0; j<n_vertices; j++)  CsMesh->sections[idx]->_vertex_num[j] = vertex_num[j]; 

        //_fvm_nodal_section_dump
        if(false)
        if(vertex_index != NULL) 
        {
        int* idx = vertex_index;
        int* num = vertex_num;
        for (int i = 0; i < n_faces; i++) 
        {
          cout<< i+1 <<" (idx ="<< idx[i] <<") "<< num[ idx[i] ] <<" "; 
          for(int j = idx[i] + 1; j < idx[i + 1]; j++) cout<< num[j] <<" ";
          cout<<" \n";
        }
        cout<<" end  (idx ="<< idx[n_faces] <<") \n";
        }

        if(false)
        if(face_index != NULL)
        {
        int* idx = face_index;
        int* num = face_num;
        for (int i = 0; i < n_elements; i++)
        {
          cout<< i+1 <<" (idx ="<< idx[i] <<") "<< num[ idx[i] ] <<" ";
          for(int j = idx[i] + 1; j < idx[i + 1]; j++) cout<< num[j] <<" ";
          cout<<" \n";
        }
        cout<<" end  (idx ="<< idx[n_elements] <<") \n";
        }

      } // n_faces 

      if(_debug)
        cout<<" [allocate_irregular_section] '"<<" idx='"<< idx <<"'"
            <<", n_faces='"<< n_faces <<"'"
            <<", n_vertices='"<< vertex_index[n_faces] <<"'"
            <<" \n";
    }
示例#6
0
文件: pr56977.c 项目: 0day-ci/gcc
/* { dg-do compile } */
/* { dg-options "-Og" } */

__attribute__((__error__("error"))) void error ();

void f (int i) {
    if (__builtin_constant_p (i)) {
	error ();
    }
}
static void I2C_Error(char *pcFilename, uint32_t ui32Line)
{
	__error__(pcFilename, ui32Line);
}