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]); } }
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); }