19#include <Interface_blocs.h>
20#include <Solv_Petsc.h>
36 Declare_instanciable_sans_constructeur(
SETS);
45 bool iterer_eqn(
Equation_base& equation,
const DoubleTab& inconnue, DoubleTab& result,
double dt,
int numero_iteration,
int& ok)
override;
59 static int eliminer(
const std::vector<std::set<std::pair<std::string, int>>> ordre,
const std::string inco_p,
const std::map<std::string, matrices_t>& mats,
const ptabs_t& sec,
60 std::map<std::string, Matrice_Morse>& A_p, tabs_t& b_p);
70 static void assembler(
const std::string inco_p,
const std::map<std::string, Matrice_Morse>& A_p,
const tabs_t& b_p,
const std::map<std::string, matrices_t>& mats,
const ptabs_t& sec,
93 DoubleVect norm, residu;
95 cv_test_t *cv_ctx =
nullptr;
96 void init_cv_ctx(
const DoubleTab& secmem,
const DoubleVect& norm);
97#if PETSC_VERSION_GE(3,24,0)
98 static PetscErrorCode destroy_cvctx(
void **mctx);
100 static PetscErrorCode destroy_cvctx(
void *mctx);
102 static PetscErrorCode convergence_test(KSP ksp, PetscInt it, PetscReal rnorm, KSPConvergedReason *reason,
void *mctx);
120 std::map<std::string, matrices_t>
mats_;
126 std::map<std::string, Matrice_Morse>
A_p_;
142 Declare_instanciable(
ICE);
Class defining operators and methods for all reading operation in an input flow (file,...
classe Equation_base Le role d'une equation est le calcul d'un ou plusieurs champs....
classe ICE (semi-implicte ICE, a la CATHARE 3D)
double get_default_facsec_max() const override
bool est_compatible_avec_th_mono() const override
: Cette classe est un OWN_PTR mais l'objet pointe est partage entre plusieurs
Classe Matrice_Morse Represente une matrice M (creuse), non necessairement carree.
Une chaine de caractere (Nom) en majuscules.
Entree & lire(const Motcle &, Entree &) override
Matrice_Bloc mat_semi_impl_
double facsec_diffusion_for_sets() const
std::map< std::string, Matrice_Morse > A_p_
static int eliminer(const std::vector< std::set< std::pair< std::string, int > > > ordre, const std::string inco_p, const std::map< std::string, matrices_t > &mats, const ptabs_t &sec, std::map< std::string, Matrice_Morse > &A_p, tabs_t &b_p)
void iterer_NS(Equation_base &, DoubleTab ¤t, DoubleTab &pression, double, Matrice_Morse &, double, DoubleTrav &, int nb_iter, int &converge, int &ok) override
double unknown_positivation(const DoubleTab &uk, DoubleTab &incr)
std::map< std::string, double > crit_conv_
double get_default_growth_factor() const override
static void assembler(const std::string inco_p, const std::map< std::string, Matrice_Morse > &A_p, const tabs_t &b_p, const std::map< std::string, matrices_t > &mats, const ptabs_t &sec, Matrice_Morse &matrice, DoubleTab &secmem, int p_degen)
std::map< std::string, matrices_t > mats_
std::vector< double > incr_var_convergence_
std::map< std::string, Matrice_Morse > mat_pred_
int nb_valeurs_temporelles_pression() const override
Matrice_Morse matrice_pression_
bool iterer_eqn(Equation_base &equation, const DoubleTab &inconnue, DoubleTab &result, double dt, int numero_iteration, int &ok) override
double facsec_diffusion_for_sets_