Exemplo n.º 1
0
void RBEIMEvaluation::legacy_write_offline_data_to_files(const std::string & directory_name,
                                                         const bool read_binary_data)
{
  LOG_SCOPE("legacy_write_offline_data_to_files()", "RBEIMEvaluation");

  Parent::legacy_write_offline_data_to_files(directory_name);

  // Get the number of basis functions
  unsigned int n_bfs = get_n_basis_functions();

  // The writing mode: ENCODE for binary, WRITE for ASCII
  XdrMODE mode = read_binary_data ? ENCODE : WRITE;

  // The suffix to use for all the files that are written out
  const std::string suffix = read_binary_data ? ".xdr" : ".dat";

  if(this->processor_id() == 0)
    {
      std::ostringstream file_name;

      // Next write out the interpolation_matrix
      file_name.str("");
      file_name << directory_name << "/interpolation_matrix" << suffix;
      Xdr interpolation_matrix_out(file_name.str(), mode);

      for(unsigned int i=0; i<n_bfs; i++)
        {
          for(unsigned int j=0; j<=i; j++)
            {
              interpolation_matrix_out << interpolation_matrix(i,j);
            }
        }

      // Next write out interpolation_points
      file_name.str("");
      file_name << directory_name << "/interpolation_points" << suffix;
      Xdr interpolation_points_out(file_name.str(), mode);

      for(unsigned int i=0; i<n_bfs; i++)
        {
          interpolation_points_out << interpolation_points[i](0);

          if(LIBMESH_DIM >= 2)
            interpolation_points_out << interpolation_points[i](1);

          if(LIBMESH_DIM >= 3)
            interpolation_points_out << interpolation_points[i](2);
        }
      interpolation_points_out.close();

      // Next write out interpolation_points_var
      file_name.str("");
      file_name << directory_name << "/interpolation_points_var" << suffix;
      Xdr interpolation_points_var_out(file_name.str(), mode);

      for(unsigned int i=0; i<n_bfs; i++)
        {
          interpolation_points_var_out << interpolation_points_var[i];
        }
      interpolation_points_var_out.close();
    }

  // Write out the elements associated with the interpolation points.
  // This uses mesh I/O, hence we have to do it on all processors.
  legacy_write_out_interpolation_points_elem(directory_name);
}
Exemplo n.º 2
0
void RBEIMEvaluation::write_offline_data_to_files(const std::string& directory_name,
                                                  const bool read_binary_data)
{
  START_LOG("write_offline_data_to_files()", "RBEIMEvaluation");

  Parent::write_offline_data_to_files(directory_name);

  // Get the number of basis functions
  unsigned int n_bfs = get_n_basis_functions();

  // The writing mode: ENCODE for binary, WRITE for ASCII
  XdrMODE mode = read_binary_data ? ENCODE : WRITE;

  // The suffix to use for all the files that are written out
  const std::string suffix = read_binary_data ? ".xdr" : ".dat";

  if(libMesh::processor_id() == 0)
  {
    OStringStream file_name;
    
    // Next write out the interpolation_matrix
    file_name.str("");
    file_name << directory_name << "/interpolation_matrix" << suffix;
    Xdr interpolation_matrix_out(file_name.str(), mode);
    
    for(unsigned int i=0; i<n_bfs; i++)
    {
      for(unsigned int j=0; j<=i; j++)
      {
        interpolation_matrix_out << interpolation_matrix(i,j);
      }
    }

    // Also, write out the "extra" row
    file_name.str("");
    file_name << directory_name << "/extra_interpolation_matrix_row" << suffix;
    Xdr extra_interpolation_matrix_row_out(file_name.str(), mode);
    
    for(unsigned int j=0; j<n_bfs; j++)
    {
      extra_interpolation_matrix_row_out << extra_interpolation_matrix_row(j);
    }
    extra_interpolation_matrix_row_out.close();

    // Next write out interpolation_points
    file_name.str("");
    file_name << directory_name << "/interpolation_points" << suffix;
    Xdr interpolation_points_out(file_name.str(), mode);
    
    for(unsigned int i=0; i<n_bfs; i++)
    {
      interpolation_points_out << interpolation_points[i](0);

      if(LIBMESH_DIM >= 2)
        interpolation_points_out << interpolation_points[i](1);

      if(LIBMESH_DIM >= 3)
        interpolation_points_out << interpolation_points[i](2);
    }
    interpolation_points_out.close();

    // Also, write out the "extra" interpolation point
    file_name.str("");
    file_name << directory_name << "/extra_interpolation_point" << suffix;
    Xdr extra_interpolation_point_out(file_name.str(), mode);
    
    extra_interpolation_point_out << extra_interpolation_point(0);

    if(LIBMESH_DIM >= 2)
      extra_interpolation_point_out << extra_interpolation_point(1);

    if(LIBMESH_DIM >= 3)
      extra_interpolation_point_out << extra_interpolation_point(2);

    extra_interpolation_point_out.close();

    // Next write out interpolation_points_var
    file_name.str("");
    file_name << directory_name << "/interpolation_points_var" << suffix;
    Xdr interpolation_points_var_out(file_name.str(), mode);

    for(unsigned int i=0; i<n_bfs; i++)
    {
      interpolation_points_var_out << interpolation_points_var[i];
    }
    interpolation_points_var_out.close();

    // Also, write out the "extra" interpolation variable
    file_name.str("");
    file_name << directory_name << "/extra_interpolation_point_var" << suffix;
    Xdr extra_interpolation_point_var_out(file_name.str(), mode);
    
    extra_interpolation_point_var_out << extra_interpolation_point_var;
    extra_interpolation_point_var_out.close();
  }

  STOP_LOG("write_offline_data_to_files()", "RBEIMEvaluation");
}