1 #ifndef _pidoums_poisson_h_ 
    2 #define _pidoums_poisson_h_ 
   13 template <
int dim, 
int spacedim, 
typename LAC=LATrilinos>
 
   24   template <
typename EnergyType, 
typename Res
idualType>
 
   26                               FEValuesCache<dim,spacedim> &scratch,
 
   27                               std::vector<EnergyType> &energies,
 
   28                               std::vector<std::vector<ResidualType> > &local_residuals,
 
   29                               bool compute_only_system_terms) 
const;
 
   33                                 const std::vector<shared_ptr<LATrilinos::BlockMatrix> >,
 
   38   mutable shared_ptr<TrilinosWrappers::PreconditionJacobi> preconditioner;
 
   43 template <
int dim, 
int spacedim, 
typename LAC>
 
   54 template <
int dim, 
int spacedim, 
typename LAC>
 
   55 template <
typename EnergyType, 
typename Res
idualType>
 
   59                        FEValuesCache<dim,spacedim> &fe_cache,
 
   60                        std::vector<EnergyType> &,
 
   61                        std::vector<std::vector<ResidualType> > &local_residuals,
 
   62                        bool compute_only_system_terms)
 const 
   66   ResidualType rt = this->alpha; 
 
   67   this->reinit (rt, cell, fe_cache);
 
   68   auto &uts = fe_cache.get_values(
"solution_dot", 
"u", s, rt);
 
   69   auto &gradus = fe_cache.get_gradients(
"solution", 
"u", s, rt);
 
   71   const unsigned int n_q_points = uts.size();
 
   72   auto &JxW = fe_cache.get_JxW_values();
 
   74   auto &fev = fe_cache.get_current_fe_values();
 
   76   for (
unsigned int q=0; q<n_q_points; ++q)
 
   79       auto &gradu = gradus[q];
 
   80       for (
unsigned int i=0; i<local_residuals[0].size(); ++i)
 
   82           auto v = fev[s].value(i,q);
 
   83           auto gradv = fev[s].gradient(i,q);
 
   84           local_residuals[0][i] += (
 
   91       (void)compute_only_system_terms;
 
   99 template <
int dim, 
int spacedim, 
typename LAC>
 
  102                                                            const std::vector<shared_ptr<LATrilinos::BlockMatrix> > matrices,
 
  108   preconditioner->initialize(matrices[0]->block(0,0));
 
  110   auto A  = linear_operator<LATrilinos::VectorType::BlockType>( matrices[0]->block(0,0) );
 
  114   P_inv = linear_operator<LATrilinos::VectorType::BlockType>(matrices[0]->block(0,0), *preconditioner);
 
  119   system_op  = block_operator<1, 1, LATrilinos::VectorType>({{
 
  124   prec_op = block_operator<1, 1, LATrilinos::VectorType>({{
 
PoissonProblem()
Definition: poisson_problem.h:45
 
Definition: lac_type.h:33
 
void energies_and_residuals(const typename DoFHandler< dim, spacedim >::active_cell_iterator &cell, FEValuesCache< dim, spacedim > &scratch, std::vector< EnergyType > &energies, std::vector< std::vector< ResidualType > > &local_residuals, bool compute_only_system_terms) const 
Definition: poisson_problem.h:58
 
void compute_system_operators(const DoFHandler< dim, spacedim > &, const std::vector< shared_ptr< LATrilinos::BlockMatrix > >, LinearOperator< LATrilinos::VectorType > &, LinearOperator< LATrilinos::VectorType > &) const 
Definition: poisson_problem.h:101
 
ActiveSelector::active_cell_iterator active_cell_iterator
 
This is the class that users should derive from. 
Definition: pde_system_interface.h:46
 
~PoissonProblem()
Definition: poisson_problem.h:18
 
Definition: poisson_problem.h:14