58 #include "libmesh/libmesh.h"    59 #include "libmesh/mesh.h"    60 #include "libmesh/mesh_generation.h"    61 #include "libmesh/exodusII_io.h"    62 #include "libmesh/equation_systems.h"    63 #include "libmesh/dof_map.h"    64 #include "libmesh/getpot.h"    65 #include "libmesh/elem.h"    66 #include "libmesh/rb_data_serialization.h"    67 #include "libmesh/rb_data_deserialization.h"    68 #include "libmesh/enum_solver_package.h"    71 #include "rb_classes.h"    78 int main (
int argc, 
char ** argv)
    84 #if !defined(LIBMESH_HAVE_SLEPC) || !defined(LIBMESH_HAVE_GLPK)    85   libmesh_example_requires(
false, 
"--enable-slepc --enable-glpk");
    88 #if !defined(LIBMESH_HAVE_XDR)    90   libmesh_example_requires(
false, 
"--enable-xdr");
    91 #elif defined(LIBMESH_DEFAULT_SINGLE_PRECISION)    93   libmesh_example_requires(
false, 
"--disable-singleprecision");
    99   libmesh_example_requires(
init.comm().size() == 1, 
"mpirun -np 1");
   102   libmesh_example_requires(2 <= LIBMESH_DIM, 
"2D support");
   104 #ifndef LIBMESH_ENABLE_DIRICHLET   105   libmesh_example_requires(
false, 
"--enable-dirichlet");
   109   std::string parameters_filename = 
"reduced_basis_ex2.in";
   110   GetPot infile(parameters_filename);
   112   unsigned int n_elem = infile(
"n_elem", 1);       
   113   const unsigned int dim = 2;                      
   115   bool store_basis_functions = infile(
"store_basis_functions", 
true); 
   140   rb_scm_con.add_variable(
"p", 
FIRST);
   143   equation_systems.
init ();
   150   equation_systems.
parameters.
set<
unsigned int>(
"eigenpairs")    = 1;
   151   equation_systems.
parameters.
set<
unsigned int>(
"basis vectors") = 3;
   153     (
"linear solver maximum iterations") = 1000;
   169   rb_eval.rb_scm_eval = &rb_scm_eval;
   173   rb_scm_con.set_rb_scm_evaluation(rb_scm_eval);
   179       rb_scm_con.process_parameters_file(parameters_filename);
   183       rb_scm_con.print_info();
   192       rb_scm_con.perform_SCM_greedy();
   200 #if defined(LIBMESH_HAVE_CAPNPROTO)   207       rb_scm_con.get_rb_scm_evaluation().legacy_write_offline_data_to_files(
"scm_data");
   211       if (store_basis_functions)
   221 #if defined(LIBMESH_HAVE_CAPNPROTO)   227       rb_eval.legacy_read_offline_data_from_files(
"rb_data");
   228       rb_scm_eval.legacy_read_offline_data_from_files(
"scm_data");
   232       unsigned int online_N = infile(
"online_N", 1);
   233       Real online_mu_0 = infile(
"online_mu_0", 0.);
   234       Real online_mu_1 = infile(
"online_mu_1", 0.);
   235       Real online_mu_2 = infile(
"online_mu_2", 0.);
   237       online_mu.
set_value(
"mu_0", online_mu_0);
   238       online_mu.
set_value(
"mu_1", online_mu_1);
   239       online_mu.
set_value(
"mu_2", online_mu_2);
   240       rb_eval.set_parameters(online_mu);
   241       rb_eval.print_parameters();
   244       rb_eval.rb_solve(online_N);
   247       libMesh::out << 
"output 1, value = " << rb_eval.RB_outputs[0]
   248                    << 
", bound = " << rb_eval.RB_output_error_bounds[0]
   250       libMesh::out << 
"output 2, value = " << rb_eval.RB_outputs[1]
   251                    << 
", bound = " << rb_eval.RB_output_error_bounds[1]
   253       libMesh::out << 
"output 3, value = " << rb_eval.RB_outputs[2]
   254                    << 
", bound = " << rb_eval.RB_output_error_bounds[2]
   256       libMesh::out << 
"output 4, value = " << rb_eval.RB_outputs[3]
   257                    << 
", bound = " << rb_eval.RB_output_error_bounds[3]
   258                    << std::endl << std::endl;
   260       if (store_basis_functions)
   263           rb_eval.read_in_basis_functions(rb_con, 
"rb_data");
   267 #ifdef LIBMESH_HAVE_EXODUS_API   274 #ifdef LIBMESH_HAVE_EXODUS_API   280 #endif // LIBMESH_ENABLE_DIRICHLET   284 #endif // LIBMESH_HAVE_SLEPC && LIBMESH_HAVE_GLPK int main(int argc, char **argv)
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. 
T command_line_next(std::string name, T default_value)
Use GetPot's search()/next() functions to get following arguments from the command line...
This is the EquationSystems class. 
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. 
void set_rb_theta_expansion(RBThetaExpansion &rb_theta_expansion_in)
Set the RBThetaExpansion object. 
virtual Real train_reduced_basis(const bool resize_rb_eval_data=true)
Train the reduced basis. 
This class serializes an RBEvaluation object using the Cap'n Proto library. 
void read_from_file(const std::string &path, bool use_packing=false)
Read the Cap'n'Proto buffer from disk. 
The ExodusII_IO class implements reading meshes in the ExodusII file format from Sandia National Labs...
void print_info(std::ostream &os=libMesh::out) const
Prints information about the equation systems, by default to libMesh::out. 
const Parallel::Communicator & comm() const
The LibMeshInit class, when constructed, initializes the dependent libraries (e.g. 
The libMesh namespace provides an interface to certain functionality in the library. 
virtual void print_info() const
Print out info that describes the current setup of this RBConstruction. 
SolverPackage default_solver_package()
virtual void load_basis_function(unsigned int i)
Load the i^th RB function into the RBConstruction solution vector. 
This class is part of the rbOOmit framework. 
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 write_equation_systems(const std::string &fname, const EquationSystems &es, const std::set< std::string > *system_names=nullptr) override
Writes out the solution for no specific time or timestep. 
void print_info(std::ostream &os=libMesh::out, const unsigned int verbosity=0, const bool global=true) const
Prints relevant information about the mesh. 
void read_from_file(const std::string &path, bool read_error_bound_data, bool use_packing=false)
Read the Cap'n'Proto buffer from disk. 
void init(triangulateio &t)
Initializes the fields of t to nullptr/0 as necessary. 
void write_to_file(const std::string &path, bool use_packing=false)
Write the Cap'n'Proto buffer to disk. 
This class is part of the rbOOmit framework. 
This class de-serializes a RBSCMEvaluation object using the Cap'n Proto library. 
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void write_to_file(const std::string &path, bool use_packing=false)
Write the Cap'n'Proto buffer to disk. 
void set_value(const std::string ¶m_name, Real value)
Set the value of the specified parameter. 
T & set(const std::string &)
Parameters parameters
Data structure holding arbitrary parameters. 
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...
This class de-serializes an RBEvaluation object using the Cap'n Proto library. 
RBEvaluation & get_rb_evaluation()
Get a reference to the RBEvaluation object. 
virtual void init()
Initialize all the systems. 
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 serializes an RBSCMEvaluation object using the Cap'n Proto library. 
void set_rb_evaluation(RBEvaluation &rb_eval_in)
Set the RBEvaluation object. 
void set_RB_system_name(const std::string &new_name)
Set the name of the associated RB system — we need this to load the (symmetrized) affine operators...
virtual System & add_system(std::string_view system_type, std::string_view name)
Add the system of type system_type named name to the systems array. 
The Mesh class is a thin wrapper, around the ReplicatedMesh class by default. 
This class is part of the rbOOmit framework.