16#include <Masse_DG_Elem.h>
17#include <Champ_Elem_DG.h>
18#include <TRUSTTab_parts.h>
19#include <Equation_base.h>
20#include <Matrix_tools.h>
21#include <Array_tools.h>
22#include <BasisFunction.h>
53 if (le_dom_dg_->gram_schmidt())
55 const DoubleVect& volume = le_dom_dg_->volumes();
57 tab_divide_any_shape(sm, volume);
65 const BasisFunction& bfunc = le_dom_dg_->get_basisFunction(order);
66 const int nb_bfunc = bfunc.
nb_bfunc();
72 DoubleTab invMsm, temp_sm;
73 invMsm.
copy(sm, RESIZE_OPTIONS::COPY_INIT);
74 temp_sm.
copy(sm, RESIZE_OPTIONS::COPY_INIT);
76 for (
int num_elem = 0; num_elem < le_dom_dg_->nb_elem(); num_elem++)
79 for (
int d = 0 ; d<dim; d++)
81 res.
ref_array(temp_sm, num_elem*dim*nb_bfunc + d*nb_bfunc, nb_bfunc);
82 loc.
ref_array(invMsm, num_elem*dim*nb_bfunc + d*nb_bfunc, nb_bfunc);
87 sm.
copy(temp_sm, RESIZE_OPTIONS::COPY_INIT);
Manages the local polynomial basis functions for Discontinuous Galerkin elements.
const int & nb_bfunc() const
const int & get_default_quadrature_order() const
const Matrice_Dense eval_invMassMatrix(const Quadrature_base &quad, const int &nelem) const
Computes the inverse of the local L2 mass matrix for element nelem.
Class defining operators and methods for all reading operation in an input flow (file,...
virtual const Champ_Inc_base & inconnue() const =0
const Nom & le_nom() const override
Renvoie le nom du champ.
Concrete DG mass operator for element-based unknowns.
DoubleTab & appliquer_impl(DoubleTab &) const override
Applies the inverse mass matrix M^{-1} to the right-hand side vector sm in-place.
Abstract base class for the DG mass matrix operator.
virtual DoubleVect & multvect_(const DoubleVect &, DoubleVect &) const
const Equation_base & equation() const
Renvoie la reference sur l'equation pointe par MorEqn::mon_equation.
class Nom Une chaine de caractere pour nommer les objets de TRUST
virtual int debute_par(const char *const n) const
const Nom & que_suis_je() const
renvoie la chaine identifiant la classe.
virtual Entree & readOn(Entree &)
Lecture d'un Objet_U sur un flot d'entree Methode a surcharger.
virtual const Nom & le_nom() const
Donne le nom de l'Objet_U Methode a surcharger : renvoie "neant" dans cette implementation.
virtual Sortie & printOn(Sortie &) const
Ecriture de l'objet sur un flot de sortie Methode a surcharger.
static int Get_order_for(const Nom &n)
Classe de base des flux de sortie.
void ref_array(TRUSTArray< _TYPE_, _SIZE_ > &, _SIZE_ start=0, _SIZE_ sz=-1) override
void copy(const TRUSTTab &, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)
virtual void echange_espace_virtuel(IsExchangeBlocking exchange_type=IsExchangeBlocking::DefaultBlocking, const std::string kernel_name="noname")