Esempio n. 1
0
Ioss::ElementTopology* Ioss::ElementTopology::boundary_type(int face_number) const
{
  if (parametric_dimension() == 3 && spatial_dimension() == 3)
    return face_type(face_number);

  if (parametric_dimension() == 2 && spatial_dimension() == 2)
    return edge_type(face_number);

  if (is_element()) {
    if (parametric_dimension() == 2) {
      // A shell has faces and edges in its boundary...
      if (face_number == 0) return nullptr;
      
      assert(spatial_dimension() == 3);
      if (face_number > number_faces()) {
	return edge_type(face_number - number_faces());
      } else {
	return face_type(face_number);
      }
    } else if (parametric_dimension() == 1) {
      return edge_type(face_number);
    }
  } else {
    if (parametric_dimension() == 2) {
      assert(spatial_dimension() == 3);
      return edge_type(face_number);
    }
  }    
  return nullptr;
}
Esempio n. 2
0
void get_pair_type(long num_hbonds, char **hb_atom1, char **hb_atom2,
               long i, long j, char *bseq, char *type)

/* Indentify the type of pair interaction according to Leontis and 
   Westhof' nomenclature */

{
    char type_wd1[5], type_wd2[5], **atom;
    long nh1,nh2;
    
    atom=cmatrix(0,num_hbonds+40, 0,4);

    if(num_hbonds >= 1){
        
        get_unequility(num_hbonds, hb_atom1, &nh1, atom); 
        edge_type(nh1, atom,  i, bseq, type_wd1);

        get_unequility(num_hbonds, hb_atom2, &nh2, atom);
        edge_type(nh2, atom,  j, bseq, type_wd2);
        
        sprintf(type,"%s/%s",type_wd1, type_wd2);
            
    }else
        sprintf(type,"?/?");
 
}
Esempio n. 3
0
 void add_edge(vertex_id_type source, vertex_id_type target, edge_data_type data) {
     // now assum both source and target are inserted
     vertex_neighbours& s_out_nbr = vertex_id_2_out_edges[source];
     vertex_neighbours& t_in_nbr = vertex_id_2_in_edges[target];
     s_out_nbr.push_back( edge_type(*this, source, target) );
     t_in_nbr.push_back( edge_type(*this, source, target) );
     ++nedge;
 }
Esempio n. 4
0
 edge_type rMatRec(intT nn, intT randStart, intT randStride) {
   if (nn==1) return edge_type(0,0);
   else {
     edge_type x = rMatRec(nn/2, randStart + randStride, randStride);
     double r = dataGen::hash<double>(randStart);
     if (r < a) return x;
     else if (r < ab) return edge_type(x.src,x.dst+nn/2);
     else if (r < abc) return edge_type(x.src+nn/2, x.dst);
     else return edge_type(x.src+nn/2, x.dst+nn/2);
   }
 }
Esempio n. 5
0
			edge_type toEdge() const
			{
				return edge_type(
					ia,ib,
					addOrientation(clipb,orientation)
				);
			
			}
Esempio n. 6
0
  inline dimacs_basic_reader incr( incr_mode mode ) {
    if( mode == edge ) {
      BOOST_ASSERT( !read_edges.empty() );
      read_edges.pop();
    }
    else if( mode == edge_weight ) {
      BOOST_ASSERT( !read_edge_weights.empty() );
      read_edge_weights.pop();
    }

    if( (mode == edge && read_edges.empty()) ||
        (mode == edge_weight && read_edge_weights.empty() )) {

      if( seen_edges > num_edges ) {
          boost::throw_exception(dimacs_exception());
      }

      while( getline( inpt, buf ) && !buf.empty() && buf[0] == 'c' );
      
      if( !inpt.eof() ) {
          int source, dest, weight;
          read_edge_line((char*) buf.c_str(), source, dest, weight);

          seen_edges++;
          source--;
          dest--;
        
          read_edges.push( edge_type( source, dest ) );
          if (want_weights) {
              read_edge_weights.push( weight );
          }
      }
      BOOST_ASSERT( read_edges.size() < 100 );
      BOOST_ASSERT( read_edge_weights.size() < 100 );
    }

    // the 1000000 just happens to be about how many edges can be read in 
    // 10s
//     if( !(seen_edges % 1000000) && !process_id( pg ) && mode == edge ) {
//       std::cout << "read " << seen_edges << " edges" << std::endl;
//     }
    return *this;
  }
Esempio n. 7
0
 operator edge_type() const {
     return edge_type(graph_ref, e);
 }
 edge_type dereference() const {
   To* to=_container.get(_i);
   return edge_type(APElement(_i), to);
 }