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"
77int 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);
109 infile.parse_command_line(argc, argv);
111 unsigned int n_elem = infile(
"n_elem", 1);
112 const unsigned int dim = 2;
114 bool store_basis_functions = infile(
"store_basis_functions",
true);
136 equation_systems.
init ();
170#if defined(LIBMESH_HAVE_CAPNPROTO)
178 if (store_basis_functions)
191#if defined(LIBMESH_HAVE_CAPNPROTO)
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);
223 << std::endl << std::endl;
225 if (store_basis_functions)
232#ifdef LIBMESH_HAVE_EXODUS_API
239#ifdef LIBMESH_HAVE_EXODUS_API
This is the EquationSystems class.
void print_info(std::ostream &os=libMesh::out) const
Prints information about the equation systems, by default to libMesh::out.
virtual void init()
Initialize all the systems.
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 ExodusII_IO class implements reading meshes in the ExodusII file format from Sandia National Labs...
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.
The LibMeshInit class, when constructed, initializes the dependent libraries (e.g.
void print_info(std::ostream &os=libMesh::out, const unsigned int verbosity=0, const bool global=true) const
Prints relevant information about the mesh.
The Mesh class is a thin wrapper, around the ReplicatedMesh class by default.
const Parallel::Communicator & comm() const
void print_basis_function_orthogonality() const
Print out a matrix that shows the orthogonality of the RB basis functions.
void set_rb_evaluation(RBEvaluation &rb_eval_in)
Set the RBEvaluation object.
virtual void print_info() const
Print out info that describes the current setup of this RBConstruction.
RBEvaluation & get_rb_evaluation()
Get a reference to the RBEvaluation object.
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.
virtual Real train_reduced_basis(const bool resize_rb_eval_data=true)
Train the reduced basis.
virtual void load_basis_function(unsigned int i)
Load the i^th RB function into the RBConstruction solution vector.
virtual void load_rb_solution()
Load the RB solution from the most recent solve with rb_eval into this system's solution vector.
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.
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.
This class serializes an RBEvaluation object using the Cap'n Proto library.
void write_to_file(const std::string &path, bool use_packing=false)
Write the Cap'n'Proto buffer to disk.
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.
std::vector< Real > RB_output_error_bounds
virtual Real rb_solve(unsigned int N)
Perform online solve with the N RB basis functions, for the set of parameters in current_params,...
std::vector< Number > RB_outputs
The vectors storing the RB output values and corresponding error bounds.
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 read_in_basis_functions(System &sys, const std::string &directory_name="offline_data", const bool read_binary_basis_functions=true)
Read in all the basis functions from file.
virtual void legacy_read_offline_data_from_files(const std::string &directory_name="offline_data", bool read_error_bound_data=true, const bool read_binary_data=true)
Read in the saved Offline reduced basis data to initialize the system for Online solves.
This class is part of the rbOOmit framework.
void set_value(const std::string ¶m_name, Real value)
Set the value of the specified parameter.
bool set_parameters(const RBParameters ¶ms)
Set the current parameters to params The parameters are checked for validity; an error is thrown if t...
void print_parameters() const
Print the current parameters.
The libMesh namespace provides an interface to certain functionality in the library.
SolverPackage default_solver_package()
T command_line_next(std::string name, T default_value)
Use GetPot's search()/next() functions to get following arguments from the command line.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real