TRUST 1.9.8
HPC thermohydraulic platform
Loading...
Searching...
No Matches
Roue.h
1/****************************************************************************
2* Copyright (c) 2022, 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 Roue_included
17#define Roue_included
18
19#include <TRUSTTabs_forward.h>
20class Roue;
21
22/*! @brief Pointeur sur une roue.
23 *
24 * La roue est creee dans le constructeur, detruite dans le destructeur.
25 * Elle est recopiee dans le constructeur par recopie
26 * et dans l'operateur d'affectation d'un Roue_ptr a un autre.
27 * Dans tous les autres cas seuls les pointeurs sont manipules.
28 *
29 * @sa Champ_Inc
30 */
31
33{
34
35
36 inline Roue* operator ->() const;
37 inline Roue* operator ->();
38 Roue_ptr(const Roue_ptr& );
39 Roue_ptr& operator =(const Roue_ptr& x);
40 Roue_ptr(Roue& );
41 Roue_ptr();
42 inline Roue_ptr(Roue*);
43 ~Roue_ptr();
45 inline Roue& valeur()
46 {
47 return *ptr;
48 }
49 inline const Roue& valeur() const
50 {
51 return *ptr;
52 }
53 inline void annule()
54 {
55 ptr=0;
56 }
57 inline operator bool() const
58 {
59 return (ptr!=0);
60 }
61 inline Roue& operator =(Roue& x)
62 {
63 ptr=&x;
64 return *ptr;
65 }
66 inline Roue* operator =(Roue* x)
67 {
68 return ptr=x;
69 }
70
71 Roue& operator[](int i);
72 const Roue& operator[](int i) const;
73};
74
75
76/*! @brief Classe Roue utilisee dans Champ_Inc_Base.
77 *
78 * Permet de gerer le nombre de valeurs du temps pour lesquels le champ
79 * doit rester en memoire.
80 *
81 * @sa Champ_Inc
82 */
83
84
85class Roue
86{
87public :
88 inline const DoubleTab& valeurs() const;
89 inline DoubleTab& valeurs();
90 Roue();
91 Roue(const Roue&);
92 ~Roue();
93 void dimensionner(int nb_val);
94 void dimensionner(int nb_val, int nb_comp);
95 int nb_cases() const;
96 int fixer_nb_cases(int );
97 void ajouter_case(int n=1);
98 void supprimer_case(int n=1);
99 inline double temps() const;
100 inline double changer_temps(const double t);
101 const Roue& futur(int i =1) const;
102 Roue& futur(int i =1);
103 const Roue& passe(int i =1) const;
104 Roue& passe(int i =1);
105 Roue& operator=(const Roue&);
106 inline void avancer(Roue_ptr& ptr)
107 {
108 ptr=ptr->futur_.valeur();
109 };
110 inline void reculer(Roue_ptr& ptr)
111 {
112 ptr=ptr->passe_.valeur();
113 };
114
115private :
116
117 double temps_;
118 int nb_cases_;
119 DoubleTab valeurs_;
120 Roue_ptr passe_;
121 Roue_ptr futur_;
122};
123
124/*! @brief
125 *
126 */
127inline Roue_ptr::Roue_ptr(Roue *x): ptr(x) {}
128
129/*! @brief
130 *
131 */
133{
134 return ptr;
135}
136
137/*! @brief
138 *
139 */
141{
142 return ptr;
143}
144
145/*! @brief Retourne le tableau des valeurs de la Roue
146 *
147 * @return (const DoubleTab&) reference constante sur le tableau des valeurs
148 */
149inline const DoubleTab& Roue::valeurs() const
150{
151 return valeurs_;
152}
153
154
155/*! @brief Retourne le tableau des valeurs de la Roue
156 *
157 * @return (const DoubleTab&) reference sur le tableau des valeurs
158 */
159inline DoubleTab& Roue::valeurs()
160{
161 return valeurs_;
162}
163
164
165/*! @brief Retoune la valeur du temps de la Roue
166 *
167 * @return (double) le temps
168 */
169inline double Roue::temps() const
170{
171 return temps_;
172}
173
174
175/*! @brief Change le temps de la Roue
176 *
177 * @param (const double& t) le nouveau temps
178 * @return (double) le nouveau temps
179 */
180inline double Roue::changer_temps(const double t)
181{
182 return temps_=t;
183}
184/*! @brief Retourne le nombre de cases de la Roue
185 *
186 * @return (int) le nombre de cases de la Roue
187 */
188inline int Roue::nb_cases() const
189{
190 return nb_cases_;
191}
192
193#endif
Classe Roue utilisee dans Champ_Inc_Base.
Definition Roue.h:86
double temps() const
Retoune la valeur du temps de la Roue.
Definition Roue.h:169
double changer_temps(const double t)
Change le temps de la Roue.
Definition Roue.h:180
int fixer_nb_cases(int)
Change le nombre de cases de la Roue.
Definition Roue.cpp:233
void avancer(Roue_ptr &ptr)
Definition Roue.h:106
void reculer(Roue_ptr &ptr)
Definition Roue.h:110
~Roue()
Desctructeur.
Definition Roue.cpp:117
Roue & operator=(const Roue &)
Affectation d'une Roue Les attibuts modifies sont le temps, les valeurs, le nombre de cases et les va...
Definition Roue.cpp:320
const DoubleTab & valeurs() const
Retourne le tableau des valeurs de la Roue.
Definition Roue.h:149
void ajouter_case(int n=1)
Ajoute n cases a la Roue.
Definition Roue.cpp:250
int nb_cases() const
Retourne le nombre de cases de la Roue.
Definition Roue.h:188
const Roue & futur(int i=1) const
Retourne la Roue correspondant a la ieme case future.
Definition Roue.cpp:132
void dimensionner(int nb_val)
Dimensionne (1D) les valeurs de la Roue et des ses roues futures.
Definition Roue.cpp:201
void supprimer_case(int n=1)
Supprime n cases de la Roue.
Definition Roue.cpp:274
Roue()
Constructeur Construit une roue avec une seule case, au temps t=0.
Definition Roue.cpp:95
const Roue & passe(int i=1) const
Retourne la Roue correspondant a la ieme case passee.
Definition Roue.cpp:164
Pointeur sur une roue.
Definition Roue.h:33
const Roue & valeur() const
Definition Roue.h:49
Roue & valeur()
Definition Roue.h:45
Roue * operator->() const
Definition Roue.h:132
Roue & operator[](int i)
Definition Roue.cpp:77
Roue_ptr()
Definition Roue.cpp:25
~Roue_ptr()
Definition Roue.cpp:65
Roue * ptr
Definition Roue.h:44
void annule()
Definition Roue.h:53
Roue_ptr(const Roue_ptr &)
Constructeur par recopie.
Definition Roue.cpp:37
Roue_ptr & operator=(const Roue_ptr &x)
Constructeur par recopie.
Definition Roue.cpp:47