Go to the documentation of this file.
   21 #include "libmesh/rb_assembly_expansion.h" 
   22 #include "libmesh/elem_assembly.h" 
   38     libmesh_error_msg(
"Error: We must have q < get_n_A_terms in perform_A_interior_assembly.");
 
   49     libmesh_error_msg(
"Error: We must have q < get_n_A_terms in perform_A_boundary_assembly.");
 
   60     libmesh_error_msg(
"Error: We must have q < get_n_F_terms in perform_F_interior_assembly.");
 
   71     libmesh_error_msg(
"Error: We must have q < get_n_F_terms in perform_F_interior_assembly.");
 
   83     libmesh_error_msg(
"Error: We must have output_index < n_outputs and " \
 
   84                       << 
"q_l < get_n_output_terms(output_index) in perform_output_interior_assembly.");
 
   96     libmesh_error_msg(
"Error: We must have output_index < n_outputs and " \
 
   97                       << 
"q_l < get_n_output_terms(output_index) in perform_output_boundary_assembly.");
 
  106   return cast_int<unsigned int>
 
  112   return cast_int<unsigned int>
 
  118   return cast_int<unsigned int>
 
  125     libmesh_error_msg(
"Error: We must have index < n_outputs in get_Q_l.");
 
  127   return cast_int<unsigned int>
 
  138   for (
auto & up : Aq_assembly)
 
  149   for (
auto & up : Fq_assembly)
 
  155   std::vector<ElemAssembly *> output_assembly_ptr;
 
  156   for (
auto & up : output_assembly)
 
  157     output_assembly_ptr.push_back(up.get());
 
  169   std::vector<ElemAssembly *> L_vector(1); L_vector[0] = output_assembly;
 
  177     libmesh_error_msg(
"Error: We must have q < get_n_A_terms in get_A_assembly.");
 
  185     libmesh_error_msg(
"Error: We must have q < get_n_F_terms in get_F_assembly.");
 
  194     libmesh_error_msg(
"Error: We must have output_index < n_outputs and " \
 
  195                       << 
"q_l < get_n_output_terms(output_index) in get_output_assembly.");
 
  
RBAssemblyExpansion()
Constructor.
 
void attach_F_assembly(ElemAssembly *Fq_assembly)
Attach ElemAssembly object for the right-hand side (both interior and boundary assembly).
 
void perform_F_interior_assembly(unsigned int q, FEMContext &context)
Perform the specified F interior assembly.
 
ElemAssembly & get_output_assembly(unsigned int output_index, unsigned int q_l)
Return a reference to the specified output assembly object.
 
void attach_multiple_A_assembly(std::vector< std::unique_ptr< ElemAssembly >> &Aq_assembly)
Attach multiple ElemAssembly objects for the left-hand side (both interior and boundary assembly).
 
void attach_multiple_F_assembly(std::vector< std::unique_ptr< ElemAssembly >> &Fq_assembly)
Attach multiple ElemAssembly objects for the right-hand side (both interior and boundary assembly).
 
The libMesh namespace provides an interface to certain functionality in the library.
 
ElemAssembly & get_F_assembly(unsigned int q)
Return a reference to the specified F_assembly object.
 
void perform_output_boundary_assembly(unsigned int output_index, unsigned int q_l, FEMContext &context)
Perform the specified output assembly.
 
unsigned int get_n_output_terms(unsigned int output_index) const
Get the number of affine terms associated with the specified output.
 
void perform_F_boundary_assembly(unsigned int q, FEMContext &context)
Perform the specified F boundary assembly.
 
std::vector< ElemAssembly * > _F_assembly_vector
Vector storing the function pointers to the assembly routines for the rhs affine vectors.
 
unsigned int get_n_F_terms() const
Get Q_f, the number of terms in the affine expansion for the right-hand side.
 
std::vector< std::vector< ElemAssembly * > > _output_assembly_vector
Vector storing the function pointers to the assembly routines for the outputs.
 
void attach_A_assembly(ElemAssembly *Aq_assembly)
Attach ElemAssembly object for the left-hand side (both interior and boundary assembly).
 
ElemAssembly & get_A_assembly(unsigned int q)
Return a reference to the specified A_assembly object.
 
void perform_A_interior_assembly(unsigned int q, FEMContext &context)
Perform the specified A interior assembly.
 
ElemAssembly provides a per-element (interior and boundary) assembly functionality.
 
void perform_output_interior_assembly(unsigned int output_index, unsigned int q_l, FEMContext &context)
Perform the specified output assembly.
 
std::vector< ElemAssembly * > _A_assembly_vector
Vectors storing the function pointers to the assembly routines for the affine operators,...
 
void perform_A_boundary_assembly(unsigned int q, FEMContext &context)
Perform the specified A boundary assembly.
 
virtual void attach_output_assembly(std::vector< std::unique_ptr< ElemAssembly >> &output_assembly)
Attach ElemAssembly object for an output (both interior and boundary assembly).
 
unsigned int get_n_outputs() const
Get n_outputs, the number output functionals.
 
unsigned int get_n_A_terms() const
Get Q_a, the number of terms in the affine expansion for the bilinear form.
 
This class provides all data required for a physics package (e.g.