65 "--enable-petsc, --enable-trilinos, or --enable-eigen");
67 #if !defined(LIBMESH_HAVE_XDR)
69 libmesh_example_requires(
false,
"--enable-xdr");
70 #elif defined(LIBMESH_DEFAULT_SINGLE_PRECISION)
72 libmesh_example_requires(
false,
"double precision");
73 #elif defined(LIBMESH_DEFAULT_TRIPLE_PRECISION)
75 libmesh_example_requires(
false,
"double precision");
79 libmesh_example_requires(2 <= LIBMESH_DIM,
"2D support");
81 #ifndef LIBMESH_ENABLE_DIRICHLET
82 libmesh_example_requires(
false,
"--enable-dirichlet");
86 std::string eim_parameters =
"eim.in";
87 std::string rb_parameters =
"rb.in";
88 std::string main_parameters =
"reduced_basis_ex4.in";
89 GetPot infile(main_parameters);
91 unsigned int n_elem = infile(
"n_elem", 1);
92 const unsigned int dim = 2;
93 bool store_basis_functions = infile(
"store_basis_functions",
false);
96 GetPot command_line (argc, argv);
98 if (command_line.search(1,
"-online_mode"))
99 online_mode = command_line.next(online_mode);
121 equation_systems.
init ();
125 equation_systems.print_info();
134 eim_construction.set_rb_evaluation(eim_rb_eval);
135 rb_construction.set_rb_evaluation(rb_eval);
140 eim_construction.process_parameters_file(eim_parameters);
141 eim_construction.print_info();
144 eim_construction.initialize_rb_construction();
145 eim_construction.train_reduced_basis();
147 #if defined(LIBMESH_HAVE_CAPNPROTO)
149 rb_eim_eval_writer.write_to_file(
"rb_eim_eval.bin");
151 eim_construction.get_rb_evaluation().legacy_write_offline_data_to_files(
"eim_data");
155 rb_construction.process_parameters_file(rb_parameters);
158 eim_rb_eval.initialize_eim_theta_objects();
159 rb_eval.get_rb_theta_expansion().attach_multiple_F_theta(eim_rb_eval.get_eim_theta_objects());
162 eim_construction.initialize_eim_assembly_objects();
163 rb_construction.get_rb_assembly_expansion().attach_multiple_F_assembly(eim_construction.get_eim_assembly_objects());
166 rb_construction.print_info();
170 rb_construction.initialize_rb_construction();
171 rb_construction.train_reduced_basis();
173 #if defined(LIBMESH_HAVE_CAPNPROTO)
177 rb_construction.get_rb_evaluation().legacy_write_offline_data_to_files(
"rb_data");
181 if (store_basis_functions)
184 eim_construction.get_rb_evaluation().write_out_basis_functions(eim_construction.get_explicit_system(),
187 rb_construction.get_rb_evaluation().write_out_basis_functions(rb_construction,
193 #if defined(LIBMESH_HAVE_CAPNPROTO)
195 rb_eim_eval_reader.read_from_file(
"rb_eim_eval.bin");
197 eim_rb_eval.legacy_read_offline_data_from_files(
"eim_data");
201 eim_rb_eval.initialize_eim_theta_objects();
202 rb_eval.get_rb_theta_expansion().attach_multiple_F_theta(eim_rb_eval.get_eim_theta_objects());
205 #if defined(LIBMESH_HAVE_CAPNPROTO)
207 rb_eval_reader.read_from_file(
"rb_eval.bin",
true);
209 rb_eval.legacy_read_offline_data_from_files(
"rb_data");
213 Real online_center_x = infile(
"online_center_x", 0.);
214 Real online_center_y = infile(
"online_center_y", 0.);
216 online_mu.
set_value(
"center_x", online_center_x);
217 online_mu.
set_value(
"center_y", online_center_y);
218 rb_eval.set_parameters(online_mu);
219 rb_eval.print_parameters();
220 rb_eval.rb_solve(rb_eval.get_n_basis_functions());
223 if (store_basis_functions)
226 eim_rb_eval.read_in_basis_functions(eim_construction.get_explicit_system(),
"eim_data");
227 rb_eval.read_in_basis_functions(rb_construction,
"rb_data");
229 eim_construction.load_rb_solution();
230 rb_construction.load_rb_solution();
231 #ifdef LIBMESH_HAVE_EXODUS_API
237 #endif // LIBMESH_ENABLE_DIRICHLET