16#include <Masse_VDF_base.h>
17#include <Domaine_Cl_VDF.h>
18#include <Domaine_VDF.h>
20#include <Dirichlet_homogene.h>
23#include <Equation_base.h>
27Masse_VDF_base::Masse_VDF_base() : penalisation_matrice_(0),penalisation_secmem_(0) {}
36 if (!matrices.count(nom_inc))
return;
41 IntTab indice(size, 2);
42 for(
int i=0; i<size; ++i)
44 indice(i,0) = indice(i,1) = i;
52 const DoubleTab& passe = semi_impl.count(nom_inco) ? semi_impl.at(nom_inco) :
equation().
inconnue().
passe();
54 Matrice_Morse *mat = matrices.count(nom_inco) ? matrices.at(nom_inco) :
nullptr;
55 DoubleTrav diag(inco);
66 for (
int i = 0; i < sz; i++)
67 penal = std::max(penal, (*mat)(i, i));
81 for (
int i = 0; i < sz; i++)
86 (*mat)(i, i) += 1. / (diag.
addr()[i] * dt);
87 secmem.
addr()[i] += 1. / (diag.
addr()[i] * dt) * passe.
addr()[i];
106 le_dom_VDF = ref_cast(
Domaine_VDF, le_dom_dis_base);
DoubleTab & passe(int i=1) override
Renvoie les valeurs du champs a l'instant t-i.
DoubleTab & valeurs() override
Renvoie le tableau des valeurs du champ au temps courant.
classe Domaine_Cl_dis_base Les objets Domaine_Cl_dis_base representent les conditions aux limites
classe Domaine_dis_base Cette classe est la base de la hierarchie des domaines discretisees.
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.
void ajouter_blocs(matrices_t matrices, DoubleTab &secmem, double dt, const tabs_t &semi_impl, int resoudre_en_increments) const override
void associer_domaine_dis_base(const Domaine_dis_base &) override
void associer_domaine_cl_dis_base(const Domaine_Cl_dis_base &) override
double penalisation_matrice_
double penalisation_secmem_
void dimensionner_blocs(matrices_t matrices, const tabs_t &semi_impl) const override
Classe Matrice_Morse Represente une matrice M (creuse), non necessairement carree.
void dimensionner(int n, _SIZE_ nnz)
Size the matrix with n lines and n columns and nnz zero-values coefficients.
const Equation_base & equation() const
Renvoie la reference sur l'equation pointe par MorEqn::mon_equation.
const std::string & getString() 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 double mp_max(double)
classe Solveur_Masse_base Represente la matrice de masse d'une equation.
virtual DoubleTab & appliquer(DoubleTab &) const
renvoie appliquer_impl(x/coeffient_temporelle) si on a un coefficient temporel sinon renvoie applique...
Classe de base des flux de sortie.
_SIZE_ dimension_tot(int) const override