Пример #1
0
void RBEIMEvaluation::legacy_read_in_interpolation_points_elem(const std::string & directory_name)
{
  _interpolation_points_mesh.read(directory_name + "/interpolation_points_mesh.xda");

  // We have an element for each EIM basis function
  unsigned int n_bfs = this->get_n_basis_functions();

  std::vector<dof_id_type> interpolation_elem_ids;
  {
    // These are just integers, so no need for a binary format here
    std::ifstream interpolation_elem_ids_in
      ((directory_name + "/interpolation_elem_ids.dat").c_str(), std::ifstream::in);

    if (!interpolation_elem_ids_in)
      libmesh_error_msg("RB data missing: " + directory_name + "/interpolation_elem_ids.dat");

    for(unsigned int i=0; i<n_bfs; i++)
      {
        dof_id_type elem_id;
        interpolation_elem_ids_in >> elem_id;
        interpolation_elem_ids.push_back(elem_id);
      }
    interpolation_elem_ids_in.close();
  }

  interpolation_points_elem.resize(n_bfs);
  for(unsigned int i=0; i<n_bfs; i++)
    {
      interpolation_points_elem[i] =
        _interpolation_points_mesh.elem_ptr(interpolation_elem_ids[i]);
    }
}
Пример #2
0
void RBEIMEvaluation::read_in_interpolation_points_elem
(const std::string& directory_name)
{
  _interpolation_points_mesh.read(directory_name + "/interpolation_points_mesh.xda");

  // We have an element for each EIM basis function (plus one extra element)
  unsigned int n_bfs = this->get_n_basis_functions();

  std::vector<dof_id_type> interpolation_elem_ids;
  dof_id_type extra_interpolation_elem_id;
  {
    // These are just integers, so no need for a binary format here
    std::ifstream interpolation_elem_ids_in
      ((directory_name + "/interpolation_elem_ids.dat").c_str(), std::ifstream::in);

    for(unsigned int i=0; i<n_bfs; i++)
      {
        dof_id_type elem_id;
        interpolation_elem_ids_in >> elem_id;
        interpolation_elem_ids.push_back(elem_id);
      }
    interpolation_elem_ids_in >> extra_interpolation_elem_id;
    interpolation_elem_ids_in.close();
  }

  interpolation_points_elem.resize(n_bfs);
  for(unsigned int i=0; i<n_bfs; i++)
    {
      interpolation_points_elem[i] =
        _interpolation_points_mesh.elem(interpolation_elem_ids[i]);
    }

  // Get the extra interpolation point
  extra_interpolation_point_elem =
    _interpolation_points_mesh.elem(extra_interpolation_elem_id);
}