Esempio n. 1
0
Number AssembleOptimization::objective (const NumericVector<Number> & soln,
                                        OptimizationSystem & /*sys*/)
{
  UniquePtr<NumericVector<Number> > AxU = soln.zero_clone();

  A_matrix->vector_mult(*AxU, soln);
  Number UTxAxU = AxU->dot(soln);

  Number UTxF = F_vector->dot(soln);

  return 0.5 * UTxAxU - UTxF;
}
Esempio n. 2
0
Number RBSCMConstruction::Aq_inner_product(unsigned int q,
                                           const NumericVector<Number>& v,
                                           const NumericVector<Number>& w)
{
  if(q >= get_rb_theta_expansion().get_n_A_terms())
    libmesh_error_msg("Error: We must have q < Q_a in Aq_inner_product.");

  matrix_A->zero();
  add_scaled_symm_Aq(q, 1.);
  matrix_A->vector_mult(*inner_product_storage_vector, w);

  return v.dot(*inner_product_storage_vector);
}
Esempio n. 3
0
Number RBSCMConstruction::B_inner_product(const NumericVector<Number>& v, const NumericVector<Number>& w) const
{
  matrix_B->vector_mult(*inner_product_storage_vector, w);

  return v.dot(*inner_product_storage_vector);
}