Back to index

salome-smesh  6.5.0
Classes | Typedefs | Functions
UNV2417 Namespace Reference

Classes

struct  TRecord

Typedefs

typedef std::vector< int > TListOfId
typedef int TGroupId
typedef std::map< TGroupId,
TRecord
TDataSet

Functions

void Read (std::ifstream &in_stream, TDataSet &theDataSet)
void ReadGroup (const std::string &myGroupLabel, std::ifstream &in_stream, TDataSet &theDataSet)
void Write (std::ofstream &out_stream, const TDataSet &theDataSet)

Class Documentation

struct UNV2417::TRecord

Definition at line 36 of file UNV2417_Structure.hxx.

Collaboration diagram for UNV2417::TRecord:
Class Members
TListOfId ElementList
string GroupName
TListOfId NodeList

Typedef Documentation

typedef std::map<TGroupId, TRecord> UNV2417::TDataSet

Definition at line 43 of file UNV2417_Structure.hxx.

typedef int UNV2417::TGroupId

Definition at line 42 of file UNV2417_Structure.hxx.

typedef std::vector<int> UNV2417::TListOfId

Definition at line 34 of file UNV2417_Structure.hxx.


Function Documentation

void UNV2417::Read ( std::ifstream &  in_stream,
TDataSet theDataSet 
)

Definition at line 39 of file UNV2417_Structure.cxx.

{
  if(!in_stream.good())
    EXCEPTION(runtime_error,"ERROR: Input file not good.");

  std::string olds, news;
  
  while(true){
    in_stream >> olds >> news;
    /*
     * a "-1" followed by a number means the beginning of a dataset
     * stop combing at the end of the file
     */
    while( ((olds != "-1") || (news == "-1") ) && !in_stream.eof() ){     
      olds = news;
      in_stream >> news;
    }
    if(in_stream.eof())
      return;
    for (int i = 0; i < NBGROUP; i++) {
      if (news == _group_labels[i]) {
        ReadGroup(news, in_stream, theDataSet);
      }
    }
  }
}

Here is the call graph for this function:

void UNV2417::ReadGroup ( const std::string &  myGroupLabel,
std::ifstream &  in_stream,
TDataSet theDataSet 
)

Definition at line 68 of file UNV2417_Structure.cxx.

{
  TGroupId aId;
  for(; !in_stream.eof();){
    in_stream >> aId ;
    if(aId == -1){
      // end of dataset is reached
      break;
    }

    int n_nodes;
    TRecord aRec;
    int aTmp;
    in_stream>>aTmp; // miss not necessary values
    in_stream>>aTmp;
    in_stream>>aTmp;
    in_stream>>aTmp;
    in_stream>>aTmp;
    in_stream>>aTmp;
    in_stream>>n_nodes;

    std::getline(in_stream, aRec.GroupName, '\n'); // Finalise previous reading
    std::getline(in_stream, aRec.GroupName, '\n');

    int aElType;
    int aElId;
    int aNum;
    for(int j=0; j < n_nodes; j++){
      in_stream>>aElType;
      in_stream>>aElId;
      if ((myGroupLabel.compare("2435") == 0) ||
          (myGroupLabel.compare("2452") == 0) ||
          (myGroupLabel.compare("2467") == 0) ||
          (myGroupLabel.compare("2477") == 0)) {
        in_stream>>aTmp;
        in_stream>>aTmp;
      }
      switch (aElType) {
      case 7: // Nodes
        aNum = aRec.NodeList.size();
        aRec.NodeList.resize(aNum + 1);
        aRec.NodeList[aNum] = aElId;
        break;
      case 8: // Elements
        aNum = aRec.ElementList.size();
        aRec.ElementList.resize(aNum + 1);
        aRec.ElementList[aNum] = aElId;
        break;
      }
    }
    theDataSet.insert(TDataSet::value_type(aId,aRec));
  }

}

Here is the caller graph for this function:

void UNV2417::Write ( std::ofstream &  out_stream,
const TDataSet theDataSet 
)

Definition at line 124 of file UNV2417_Structure.cxx.

{
  if(!out_stream.good())
    EXCEPTION(runtime_error,"ERROR: Output file not good.");
  
  /*
   * Write beginning of dataset
   */
  out_stream<<"    -1\n";
  out_stream<<"  "<<_label_dataset<<"\n";

  TDataSet::const_iterator anIter = theDataSet.begin();
  for(; anIter != theDataSet.end(); anIter++){
    const TGroupId& aLabel = anIter->first;
    const TRecord& aRec = anIter->second;
    int aNbNodes = aRec.NodeList.size();
    int aNbElements = aRec.ElementList.size();
    int aNbRecords = aNbNodes + aNbElements;

    out_stream<<std::setw(10)<<aLabel;  /* group ID */
    out_stream<<std::setw(10)<<0;  
    out_stream<<std::setw(10)<<0;
    out_stream<<std::setw(10)<<0;
    out_stream<<std::setw(10)<<0;
    out_stream<<std::setw(10)<<0;
    out_stream<<std::setw(10)<<0;
    out_stream<<std::setw(10)<<aNbRecords<<std::endl; 

    out_stream<<aRec.GroupName<<std::endl;
    int aRow = 0;
    int i;
    for (i = 0; i < aNbNodes; i++) {
      if (aRow == 2) {
        out_stream<<std::endl; 
        aRow = 0;
      }
      out_stream<<std::setw(10)<<7;
      out_stream<<std::setw(10)<<aRec.NodeList[i];
      out_stream<<std::setw(10)<<0;
      out_stream<<std::setw(10)<<0;
      aRow++;
    }
    for (i = 0; i < aNbElements; i++) {
      if (aRow == 2) {
        out_stream<<std::endl; 
        aRow = 0;
      }
      out_stream<<std::setw(10)<<8;
      out_stream<<std::setw(10)<<aRec.ElementList[i];
      out_stream<<std::setw(10)<<0;
      out_stream<<std::setw(10)<<0;
      aRow++;
    }
    out_stream<<std::endl; 
  }

  /*
   * Write end of dataset
   */
  out_stream<<"    -1\n";
}