TrioCFD 1.9.8
TrioCFD documentation
Loading...
Searching...
No Matches
Sonde_Int.h
1/****************************************************************************
2* Copyright (c) 2024, CEA
3* All rights reserved.
4*
5* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
6* 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
7* 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
8* 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
9*
10* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
11* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
12* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
13*
14*****************************************************************************/
15
16#ifndef Sonde_Int_included
17#define Sonde_Int_included
18
19#include <TRUST_Ref.h>
20#include <SFichier.h>
21#include <TRUSTTab.h>
22
23class Postraitement;
24#include <Domaine_forward.h>
25
26/*! @brief classe Sonde_Int Cette classe permet d'effectuer l'evolution d'un champ au cours du temps.
27 *
28 * On choisit l'ensemble des points sur lesquels on veut sonder un champ et
29 * la periodicite des observations. Les objets Postraitement porte des
30 * des sondes sur les champs a observer, une sonde porte d'ailleurs une
31 * reference sur un postraitement.
32 *
33 * @sa Postraitement Sonde_Ints
34 */
35class Sonde_Int : public Objet_U
36{
37 Declare_instanciable_sans_destructeur(Sonde_Int);
38
39public :
40
41 inline Sonde_Int(const Nom& );
42 void associer_post(const Postraitement& );
43 void initialiser(const Domaine& );
44 void mettre_a_jour(double temps, double tinit);
45 void postraiter(double );
46 void ouvrir_fichier();
47 inline void fermer_fichier();
48 inline const IntVect& le_tableau() const;
49 inline const DoubleTab& les_positions() const;
50 inline const IntVect& les_poly() const;
51 inline void fixer_periode(double);
52 inline double temps() const;
53 //int add(const DoubleTab&);
54 //int add(const double, const double);
55 //int add(const double, const double, const double);
56 inline SFichier& fichier();
57 inline ~Sonde_Int() override;
58
59private :
60
61 OBS_PTR(Postraitement) mon_post;
62 Nom nom_; // le nom de la sonde
63 int dim = -1; // la dimension de la sone (point:0,segment:1,plan:2,volume:3)
64 int nbre_points1= -1,nbre_points2= -1,nbre_points3= -1; // faire des sonde_segment,sonde_plan,etc...
65 OBS_PTR(IntVect) mon_tableau; // Le tableau sonde
66 DoubleTab les_positions_; // les coordonnees des sondes ponctuelles
67 IntVect elem_; // les elements contenant les sondes ponctuelles
68 IntTab valeurs; // les valeurs de mon_tableau pour les indices donnes par elem_
69 double periode= 1.e10; // periode d'echantillonnage
70 double nb_bip= 0.;
71 SFichier* le_fichier;
72};
73
74
75/*! @brief Constructeur d'une sonde a partir de son nom.
76 *
77 * @param (Nom& nom) le nom de la sonde a construire
78 */
79inline Sonde_Int::Sonde_Int(const Nom& nom)
80 : nom_(nom), le_fichier(0)
81{}
82
83
84
85/*! @brief Le temps ecoule.
86 *
87 * @return (double) le temps ecoule
88 */
89inline double Sonde_Int::temps() const
90{
91 return nb_bip*periode;
92}
93
94
95
96/*! @brief Ferme le fichier sur laquelle la sonde ecrit.
97 *
98 */
100{
101 if (le_fichier)
102 {
103 delete le_fichier;
104 }
105}
106
107
108/*! @brief Fixe la periode avec laquelle on sonde le champ.
109 *
110 * @param (double pe) la periode de sondage du champ
111 */
112inline void Sonde_Int::fixer_periode(double pe)
113{
114 periode=pe;
115}
116
117
118/*! @brief Renvoie le champ associe.
119 *
120 * @return (Champ_base&) le champ associe
121 */
122inline const IntVect& Sonde_Int::le_tableau() const
123{
124 return mon_tableau.valeur();
125}
126
127
128/*! @brief Renvoie le tableau des positions du champ qui sont sondees.
129 *
130 * @return (DoubleTab&) les positions sondees
131 */
132inline const DoubleTab& Sonde_Int::les_positions() const
133{
134 return les_positions_;
135}
136
137
138/*! @brief Renvoie le tableau des elements qui sont sondes.
139 *
140 * @return (IntVect&) les ments qui sont sondes
141 */
142inline const IntVect& Sonde_Int::les_poly() const
143{
144 return elem_;
145}
146
147
148/*! @brief Renvoie un flot de sortie Fichier, pointant sur le fichier de sortie utilise par la sonde.
149 *
150 * @return (SFichier&) le fichier de sortie utilise par la sonde
151 */
153{
154 return *le_fichier;
155}
156
157/*! @brief Destructeur.
158 *
159 * Ferme le fichier avant de detruire l'objet.
160 *
161 */
163{
165}
166
167
168#endif
class Nom Une chaine de caractere pour nommer les objets de TRUST
Definition Nom.h:31
Objet_U()
Constructeur par defaut : attribue un numero d'identifiant unique a l'objet (object_id_),...
Definition Objet_U.cpp:55
classe Postraitement La classe est dotee -d une liste de champs generiques champs_post_complet_ qui c...
Cette classe est a la classe C++ ofstream ce que la classe Sortie est a la classe C++ ostream Elle re...
Definition SFichier.h:27
SFichier & fichier()
Renvoie un flot de sortie Fichier, pointant sur le fichier de sortie utilise par la sonde.
Definition Sonde_Int.h:152
double temps() const
Le temps ecoule.
Definition Sonde_Int.h:89
void ouvrir_fichier()
Ouvre le fichier associe a la sonde.
const IntVect & le_tableau() const
Renvoie le champ associe.
Definition Sonde_Int.h:122
const DoubleTab & les_positions() const
Renvoie le tableau des positions du champ qui sont sondees.
Definition Sonde_Int.h:132
const IntVect & les_poly() const
Renvoie le tableau des elements qui sont sondes.
Definition Sonde_Int.h:142
void associer_post(const Postraitement &)
Associer le postraitement a la sonde.
void initialiser(const Domaine &)
Initialise la sonde.
Sonde_Int(const Nom &)
Constructeur d'une sonde a partir de son nom.
Definition Sonde_Int.cpp:21
void fixer_periode(double)
Fixe la periode avec laquelle on sonde le champ.
Definition Sonde_Int.h:112
~Sonde_Int() override
Destructeur.
Definition Sonde_Int.h:162
void mettre_a_jour(double temps, double tinit)
Effectue une mise a jour en temps de la sonde effectue le postraitement.
void fermer_fichier()
Ferme le fichier sur laquelle la sonde ecrit.
Definition Sonde_Int.h:99
void postraiter(double)
Effectue un postraitement.