16#include <Champ_Generique_refChamp.h>
17#include <Discretisation_base.h>
18#include <Schema_Temps_base.h>
19#include <Op_Correlation.h>
47 OWN_PTR(
Champ_base) espace_stockage_source_a, espace_stockage_source_b;
48 const Champ_base& source_a = a->get_champ(espace_stockage_source_a);
49 const Champ_base& source_b = b->get_champ(espace_stockage_source_b);
51 const int nb_compo_a = source_a.
nb_comp();
52 const int nb_compo_b = source_b.
nb_comp();
60 noms_a = a->get_property(
"nom");
61 noms_b = b->get_property(
"nom");
65 noms_a = a->get_property(
"nom_cible");
66 noms_b = b->get_property(
"nom_cible");
69 const Nom nom_a = noms_a[0];
70 const Nom nom_b = noms_b[0];
74 Noms compo_a, compo_b;
78 compo_a = a->get_property(
"composantes");
79 compo_b = b->get_property(
"composantes");
87 const Noms unites_a = a->get_property(
"unites");
88 const Noms unites_b = b->get_property(
"unites");
90 int nb_valeurs_nodales = -1;
97 || (nb_compo_a > 1 && (tab_a.
nb_dim() == 1 || tab_a.
dimension(1) != nb_compo_a))
98 || (nb_compo_b > 1 && (tab_b.
nb_dim() == 1 || tab_b.
dimension(1) != nb_compo_b)))
103 Nom Champ_Fonc_P0 =
"Champ_Fonc_P0_";
106 nb_valeurs_nodales = domaine.nb_elem();
115 nb_valeurs_nodales = -1;
117 int nb_comp = nb_compo_a * nb_compo_b;
119 Noms noms_composantes;
128 noms_composantes.dimensionner(nb_comp);
129 Nom debut(
"Correlation_");
130 debut += nom_a +
"_";
131 for (
int i = 0; i < nb_comp; i++)
132 noms_composantes[i] = debut + compo_b[i];
134 else if (nb_compo_b == 1)
137 noms_composantes.dimensionner(nb_comp);
138 Nom debut(
"Correlation_");
139 debut += nom_b +
"_";
140 for (
int i = 0; i < nb_comp; i++)
141 noms_composantes[i] = debut + compo_a[i];
146 noms_composantes.dimensionner(nb_comp);
147 Nom debut(
"Correlation_");
148 for (
int i = 0; i < nb_compo_a; i++)
149 for (
int j = 0; j < nb_compo_b; j++)
150 noms_composantes[i * nb_compo_b + j] = debut + compo_a[i] +
"_" + compo_b[j];
156 Nom nom_pour_post =
"Correlation_";
157 nom_pour_post += nom_a +
"_" + nom_b;
160 Nom pdi_name = prefix + nom_pour_post;
169 integrale_tps_ab_.le_champ_calcule().fixer_nb_valeurs_nodales(nb_valeurs_nodales);
172 Nom unite(unites_a[0]);
174 unite += unites_b[0];
180 Noms unites(nb_comp);
181 for (
int i = 0; i < unites.size(); i++)
199 assert(est_egal(dt_a, dt_ab));
200 assert(est_egal(dt_b, dt_ab));
201 correlation.
ajoute_produit_tensoriel(-1 / (dt_a * dt_b), integrale_tps_a_->le_champ_calcule(), integrale_tps_b_->le_champ_calcule());
DoubleTab & valeurs() override
Surcharge Champ_base::valeurs() Renvoie le tableau des valeurs.
class Champ_Generique_base
Classe de champ particuliere qui encapsule une reference a un champ volumique de TRUST de type Champ_...
classe Champ_base Cette classe est la base de la hierarchie des champs.
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 int nb_comp() const
const Noms & noms_compo() const
Renvoie le tableau des noms des composantes du champ.
Classe de base des formats de postraitements pour les champs (lata, med, cgns, lml,...
const Champ_Fonc_base & le_champ_calcule() const
classe Integrale_tps_produit_champs Cette classe represente l'integrale en temps d'un produit de 2 ch...
void ajoute_produit_tensoriel(double, const Champ_base &, const Champ_base &)
class Nom Une chaine de caractere pour nommer les objets de TRUST
Nom substr_old(const int, const int) const
Retourne un nom selon la commande usuelle substr ATTENTION : deb = 1 => premier caractere de la chain...
Un tableau de chaine de caracteres (VECT(Nom)).
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.
double dt_integration_b() const
Integrale_tps_produit_champs integrale_tps_ab_
DoubleTab calculer_valeurs() const override
const Op_Moyenne & la_moyenne_b() const
double dt_integration_a() const
double dt_integration_ab() const
int completer_post_statistiques(const Domaine &dom, const int is_axi, Format_Post_base &format) override
const Op_Moyenne & la_moyenne_a() const
const DoubleTab & valeurs_b() const
const Nom & le_nom() const override
Donne le nom de l'Objet_U Methode a surcharger : renvoie "neant" dans cette implementation.
OBS_PTR(Op_Moyenne) la_moyenne_a_
const DoubleTab & valeurs_a() const
void completer(const Probleme_base &, const Nom &) override
const Integrale_tps_Champ & integrale() const override
classe Operateur_Statistique_tps_base Represente des operations statistiques sur les champs.
classe Probleme_base C'est un Probleme_U qui n'est pas un couplage.
const Discretisation_base & discretisation() const
Renvoie la discretisation associee au probleme.
const Schema_Temps_base & schema_temps() const
Renvoie le schema en temps associe au probleme.
double temps_courant() const
Renvoie le temps courant.
Classe de base des flux de sortie.
void resize(_SIZE_ n, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)
_SIZE_ dimension_tot(int) const override
_SIZE_ dimension(int d) const
_SIZE_ size_reelle_ok() const
virtual const MD_Vector & get_md_vector() const