Go to the documentation of this file.
   57 #include "libmesh/libmesh.h" 
   58 #include "libmesh/mesh.h" 
   59 #include "libmesh/mesh_generation.h" 
   60 #include "libmesh/exodusII_io.h" 
   61 #include "libmesh/equation_systems.h" 
   62 #include "libmesh/dof_map.h" 
   63 #include "libmesh/getpot.h" 
   64 #include "libmesh/elem.h" 
   65 #include "libmesh/rb_data_serialization.h" 
   66 #include "libmesh/rb_data_deserialization.h" 
   67 #include "libmesh/enum_solver_package.h" 
   70 #include "rb_classes.h" 
   77 int main (
int argc, 
char ** argv)
 
   84                            "--enable-petsc, --enable-trilinos, or --enable-eigen");
 
   86 #if !defined(LIBMESH_HAVE_XDR) 
   88   libmesh_example_requires(
false, 
"--enable-xdr");
 
   89 #elif defined(LIBMESH_DEFAULT_SINGLE_PRECISION) 
   91   libmesh_example_requires(
false, 
"--disable-singleprecision");
 
   98   libmesh_example_requires(2 <= LIBMESH_DIM, 
"2D support");
 
  100 #ifndef LIBMESH_ENABLE_DIRICHLET 
  101   libmesh_example_requires(
false, 
"--enable-dirichlet");
 
  105   std::string parameters_filename = 
"reduced_basis_ex1.in";
 
  106   GetPot infile(parameters_filename);
 
  108   unsigned int n_elem = infile(
"n_elem", 1);       
 
  109   const unsigned int dim = 2;                      
 
  111   bool store_basis_functions = infile(
"store_basis_functions", 
true); 
 
  114   GetPot command_line (argc, argv);
 
  116   if (command_line.search(1, 
"-online_mode"))
 
  117     online_mode = command_line.next(online_mode);
 
  136   equation_systems.
init ();
 
  170 #if defined(LIBMESH_HAVE_CAPNPROTO) 
  178       if (store_basis_functions)
 
  191 #if defined(LIBMESH_HAVE_CAPNPROTO) 
  195       rb_eval.legacy_read_offline_data_from_files();
 
  199       unsigned int online_N = infile(
"online_N", 1);
 
  200       Real online_x_vel = infile(
"online_x_vel", 0.);
 
  201       Real online_y_vel = infile(
"online_y_vel", 0.);
 
  203       online_mu.
set_value(
"x_vel", online_x_vel);
 
  204       online_mu.
set_value(
"y_vel", online_y_vel);
 
  205       rb_eval.set_parameters(online_mu);
 
  206       rb_eval.print_parameters();
 
  209       rb_eval.rb_solve(online_N);
 
  212       libMesh::out << 
"output 1, value = " << rb_eval.RB_outputs[0]
 
  213                    << 
", bound = " << rb_eval.RB_output_error_bounds[0]
 
  215       libMesh::out << 
"output 2, value = " << rb_eval.RB_outputs[1]
 
  216                    << 
", bound = " << rb_eval.RB_output_error_bounds[1]
 
  218       libMesh::out << 
"output 3, value = " << rb_eval.RB_outputs[2]
 
  219                    << 
", bound = " << rb_eval.RB_output_error_bounds[2]
 
  221       libMesh::out << 
"output 4, value = " << rb_eval.RB_outputs[3]
 
  222                    << 
", bound = " << rb_eval.RB_output_error_bounds[3]
 
  223                    << std::endl << std::endl;
 
  225       if (store_basis_functions)
 
  228           rb_eval.read_in_basis_functions(rb_con);
 
  232 #ifdef LIBMESH_HAVE_EXODUS_API 
  239 #ifdef LIBMESH_HAVE_EXODUS_API 
  245 #endif // LIBMESH_ENABLE_DIRICHLET 
  
The Mesh class is a thin wrapper, around the ReplicatedMesh class by default.
 
virtual System & add_system(const std::string &system_type, const std::string &name)
Add the system of type system_type named name to the systems array.
 
virtual void process_parameters_file(const std::string ¶meters_filename)
Read in from the file specified by parameters_filename and set the this system's member variables acc...
 
virtual void write_out_basis_functions(System &sys, const std::string &directory_name="offline_data", const bool write_binary_basis_functions=true)
Write out all the basis functions to file.
 
virtual void initialize_rb_construction(bool skip_matrix_assembly=false, bool skip_vector_assembly=false)
Allocate all the data structures necessary for the construction stage of the RB method.
 
void set_rb_evaluation(RBEvaluation &rb_eval_in)
Set the RBEvaluation object.
 
The libMesh namespace provides an interface to certain functionality in the library.
 
const Parallel::Communicator & comm() const
 
This class is part of the rbOOmit framework.
 
This class serializes an RBEvaluation object using the Cap'n Proto library.
 
SolverPackage default_solver_package()
 
The ExodusII_IO class implements reading meshes in the ExodusII file format from Sandia National Labs...
 
int main(int argc, char **argv)
 
void init(triangulateio &t)
Initializes the fields of t to nullptr/0 as necessary.
 
void print_basis_function_orthogonality()
Print out a matrix that shows the orthogonality of the RB basis functions.
 
void write_to_file(const std::string &path)
Write the Cap'n'Proto buffer to disk.
 
virtual void init()
Initialize all the systems.
 
RBEvaluation & get_rb_evaluation()
Get a reference to the RBEvaluation object.
 
void set_value(const std::string ¶m_name, Real value)
Set the value of the specified parameter.
 
The LibMeshInit class, when constructed, initializes the dependent libraries (e.g.
 
void print_info(std::ostream &os=libMesh::out) const
Prints information about the equation systems, by default to libMesh::out.
 
This is the EquationSystems class.
 
virtual void write_equation_systems(const std::string &, const EquationSystems &, const std::set< std::string > *system_names=nullptr)
This method implements writing a mesh with data to a specified file where the data is taken from the ...
 
virtual void print_info()
Print out info that describes the current setup of this RBConstruction.
 
virtual void legacy_write_offline_data_to_files(const std::string &directory_name="offline_data", const bool write_binary_data=true)
Write out all the data to text files in order to segregate the Offline stage from the Online stage.
 
virtual void load_basis_function(unsigned int i)
Load the i^th RB function into the RBConstruction solution vector.
 
void print_info(std::ostream &os=libMesh::out) const
Prints relevant information about the mesh.
 
virtual void load_rb_solution()
Load the RB solution from the most recent solve with rb_eval into this system's solution vector.
 
This class de-serializes an RBEvaluation object using the Cap'n Proto library.
 
void read_from_file(const std::string &path, bool read_error_bound_data)
Write the Cap'n'Proto buffer to disk.
 
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
 
virtual Real train_reduced_basis(const bool resize_rb_eval_data=true)
Train the reduced basis.