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