18#include <TRUSTArray.h>
19#include <Multigrille_Adrien.h>
20#include <communications.h>
22#include <Schema_Comm.h>
23#include <IJK_VDF_converter.h>
24#include <Interprete_bloc.h>
25#include <Perf_counters.h>
26#include <SSE_kernels.h>
43 param.
ajouter(
"ghost_size", &ghost_size_);
44 param.
ajouter(
"coarsen_operators", &coarsen_operators_);
54 param.ajouter(
"ijkdis_name", &ijkdis_name);
55 param.lire_avec_accolades(is);
57 if (ijkdis_name !=
Nom())
113 statistics().create_custom_counter(
"Multigrid_Adrien::set_rho",2,
"IJK");
114 statistics().begin_count(
"Multigrid_Adrien::set_rho",statistics().get_last_opened_counter_level()+1);
117 IJK_Field_double ijk_rho(grids_data_double_[0].get_update_rho());
123 IJK_Field_float ijk_rho(grids_data_float_[0].get_update_rho());
127 statistics().end_count(
"Multigrid_Adrien::set_rho");
138 Cerr <<
"Multigrille_Adrien::completer_double_for_residue" << finl;
139 grids_data_double_.dimensionner(1);
152 return norme_ijk(residu);
This class encapsulates all the information related to the eulerian mesh for TrioIJK.
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....
void allocate(const Domaine_IJK &d, Domaine_IJK::Localisation l, int ghost_size, int additional_k_layers=0, int nb_compo=1, const Nom &name=Nom(), bool external_storage=false, int monofluide=0, double rov=0., double rol=0., int use_inv_rho_in_pressure_solver=0)
static double rho_vap_ref_for_poisson_
static double rho_liq_ref_for_poisson_
static const char * get_conventional_name()
const Domaine_IJK & get_domaine() const
static Objet_U & objet_global(const Nom &nom)
cherche l'objet demande dans l'Interprete_bloc courant (Interprete_bloc::interprete_courant()) et dan...
void build_matrix(const IJK_Field_template< _TYPE_, _TYPE_ARRAY_ > &coeffs_face)
int completer(const Equation_base &eq)
void ajouter_param(Param ¶m) override
void set_rho(const DoubleVect &rho)
void completer_double_for_residue(const Domaine_IJK &splitting)
IJK_Field_double & get_storage_double(StorageId si, int level) override
int needed_kshift_for_jacobi(int level) const override
void jacobi_residu(IJK_Field_float &x, const IJK_Field_float *secmem, const int grid_level, const int n_jacobi, IJK_Field_float *residu) const override
double multigrille_failure() override
void initialize(const Domaine_IJK &)
void completer_template(const Domaine_IJK &)
virtual void ajouter_param(Param &)
void convert_to_ijk(const DoubleVect &x, IJK_Field_template< _TYPE_, _TYPE_ARRAY_ > &ijk_x)
const int precision_double_
const int precision_float_
Matrice_Grossiere & set_coarse_matrix()
int nsweeps_jacobi_residu(int level) const
void coarse_solver(IJK_Field_template< _TYPE_, _TYPE_ARRAY_ > &x, const IJK_Field_template< _TYPE_, _TYPE_ARRAY_ > &b)
class Nom Une chaine de caractere pour nommer les objets de TRUST
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 Sortie & printOn(Sortie &) const
Ecriture de l'objet sur un flot de sortie Methode a surcharger.
Helper class to factorize the readOn method of Objet_U classes.
void ajouter(const char *keyword, const int *value, Param::Nature nat=Param::OPTIONAL)
Register an integer parameter.
Classe de base des flux de sortie.