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
Returns field values at instant t-i.
DoubleTab & valeurs() override
Returns the array of field values at the current time.
class Domaine_Cl_dis_base Domaine_Cl_dis_base objects represent discretized boundary conditions
class Domaine_dis_base This class is the base of the hierarchy of discretized domains.
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
Returns the name of the field.
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
Matrice_Morse class - Represents a (sparse) matrix M, not necessarily square,.
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
Returns the reference to the equation pointed to by MorEqn::mon_equation.
const std::string & getString() const
const Nom & que_suis_je() const
Returns the string identifying the class.
virtual Entree & readOn(Entree &)
Reads an Objet_U from an input stream. Virtual method to override.
virtual const Nom & le_nom() const
Returns the name of the Objet_U. Virtual method to override: returns "neant" in this implementation.
virtual Sortie & printOn(Sortie &) const
Writes the object to an output stream. Virtual method to override.
static double mp_max(double)
Solveur_Masse_base Represents the mass matrix of an equation.
virtual DoubleTab & appliquer(DoubleTab &) const
Returns appliquer_impl(x/temporal_coefficient) if a temporal coefficient is set, otherwise returns ap...
Base class for output streams.
_SIZE_ dimension_tot(int) const override