TrioCFD 1.9.8
TrioCFD documentation
Loading...
Searching...
No Matches
Domaine_Cl_dis_base.h
1/****************************************************************************
2* Copyright (c) 2026, 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 Domaine_Cl_dis_base_included
17#define Domaine_Cl_dis_base_included
18
19#include <Conds_lim.h>
20#include <TRUST_Ref.h>
21#include <MorEqn.h>
22#include <Domaine_forward.h>
23
24/*! @brief classe Domaine_Cl_dis_base Les objets Domaine_Cl_dis_base representent les conditions aux limites
25 *
26 * discretisees. Domaine_Cl_dis_base est un morceau d'equation donc elle
27 * herite de MorEqn, c'est grace a cet heritage que chaque objet
28 * Domaine_Cl_dis_base contient une reference vers l'equation a laquelle il
29 * se rapporte. Les conditions aux limites discretisees representent les
30 * conditions aux limites du domaine discretise associe a l'equation
31 * reference par Domaine_Cl_dis_base.
32 * Domaine_Cl_dis_base a un membre representant les conditions aux limites.
33 *
34 * @sa MorEqn Conds_lim Cond_lim_base, Classe abstraite., Methodes abstraites:, void completer(const Domaine_dis_base& ), void imposer_cond_lim(Champ_Inc_base& )
35 */
36class Domaine_Cl_dis_base : public MorEqn, public Objet_U
37{
38
39 Declare_base(Domaine_Cl_dis_base);
40
41public:
42
43 // Methode surchargee de Objet_U:
44 void nommer(const Nom& nom) override;
45 const Cond_lim& les_conditions_limites(int ) const;
48 const Conds_lim& les_conditions_limites() const;
49 int nb_cond_lim() const;
50 virtual void mettre_a_jour(double temps);
51 virtual void mettre_a_jour_ss_pas_dt(double temps);
52 void resetTime(double time);
53 void completer();
54 int contient_Cl(const Nom&);
56 const Domaine_dis_base& domaine_dis() const;
57 Domaine& domaine();
58 const Domaine& domaine() const;
59
60 virtual void associer(const Domaine_dis_base& ddb) { /* Does nothing by default */ }
61
62 virtual int calculer_coeffs_echange(double temps);
63 // !SC : passage du OWN_PTR(Champ_Inc_base) n'est plus necessaire car il y a une ref maintenant
64 virtual void imposer_cond_lim(Champ_Inc_base&,double ) = 0;
65 int nb_faces_Cl() const;
66
67 virtual const Cond_lim& la_cl_de_la_face(int num_face) const;
68
69 const Cond_lim_base& condition_limite_de_la_face_reelle(int face_globale, int& face_locale) const;
70 const Cond_lim_base& condition_limite_de_la_face_virtuelle(int face_globale, int& face_locale) const;
73 void changer_temps_futur(double temps,int i);
74 void calculer_derivee_en_temps(double t1, double t2);
75 void set_temps_defaut(double temps);
76 int avancer(double temps);
77 int reculer(double temps);
78 virtual int initialiser(double temps);
79 inline const Nom& le_nom() const override;
80
81 virtual void associer_inconnue(const Champ_Inc_base&);
82 virtual const Champ_Inc_base& inconnue() const;
83 virtual Champ_Inc_base& inconnue();
84
85protected:
86
89 OBS_PTR(Champ_Inc_base) mon_inconnue;
90 virtual void completer(const Domaine_dis_base& ) = 0;
91};
92
93inline const Nom& Domaine_Cl_dis_base::le_nom() const
94{
95 return nom_;
96}
97
98#endif
99
Classe Champ_Inc_base.
classe Cond_lim_base Classe de base pour la hierarchie des classes qui representent les differentes c...
classe Cond_lim Classe generique servant a representer n'importe quelle classe
Definition Cond_lim.h:31
classe Conds_lim Cette classe represente un vecteur de conditions aux limites.
Definition Conds_lim.h:32
classe Domaine_Cl_dis_base Les objets Domaine_Cl_dis_base representent les conditions aux limites
virtual void mettre_a_jour_ss_pas_dt(double temps)
Effectue une mise a jour pour des sous pas de temps d'un schema en temps (par exemple dans RungeKutta...
virtual void associer(const Domaine_dis_base &ddb)
virtual int calculer_coeffs_echange(double temps)
Calcul des coefficients d'echange pour les problemes couples thermiques.
void calculer_derivee_en_temps(double t1, double t2)
Calcule le taux d'accroissement des CLs instationnaires entre t1 et t2.
void nommer(const Nom &nom) override
Donne un nom a l'Objet_U Methode virtuelle a surcharger.
virtual int initialiser(double temps)
Initialise les CLs Contrairement aux methodes mettre_a_jour, les methodes.
virtual const Champ_Inc_base & inconnue() const
const Cond_lim_base & condition_limite_de_la_frontiere(Nom frontiere) const
Renvoie la condition limite associee a une frontiere de nom donne.
int reculer(double temps)
Tourne la roue des CLsj usqu'au temps donne.
const Nom & le_nom() const override
Donne le nom de l'Objet_U Methode a surcharger : renvoie "neant" dans cette implementation.
virtual void imposer_cond_lim(Champ_Inc_base &, double)=0
int nb_cond_lim() const
Renvoie le nombre de conditions aux limites.
virtual const Cond_lim & la_cl_de_la_face(int num_face) const
A partir d'un indice de face de bord dans le Domaine_VF, renvoie la condition aux limites a laquelle ...
void completer()
Appel Cond_lim_base::completer() sur chaque condition aux limites.
virtual void completer(const Domaine_dis_base &)=0
Conds_lim & les_conditions_limites()
Renvoie le tableaux des conditions aux limites.
void resetTime(double time)
Domaine_dis_base & domaine_dis()
Renvoie une reference sur le domaine discretise associe aux conditions aux limites.
virtual void associer_inconnue(const Champ_Inc_base &)
void set_temps_defaut(double temps)
Change le i-eme temps futur de toutes les CLs.
virtual void mettre_a_jour(double temps)
Effectue une mise a jour en temps de toutes les conditions aux limites.
int avancer(double temps)
Tourne la roue des CLs jusqu'au temps donne.
int contient_Cl(const Nom &)
Renvoie 1 si l'objet contient une condition aux limites du Nom specifie.
const Cond_lim_base & condition_limite_de_la_face_reelle(int face_globale, int &face_locale) const
Renvoie la condition limite associee a une face reelle donnee.
const Cond_lim_base & condition_limite_de_la_face_virtuelle(int face_globale, int &face_locale) const
Renvoie la condition limite associee a une face virtuelle donnee.
OBS_PTR(Champ_Inc_base) mon_inconnue
void changer_temps_futur(double temps, int i)
Change le i-eme temps futur de toutes les CLs.
classe Domaine_dis_base Cette classe est la base de la hierarchie des domaines discretisees.
classe MorEqn Classe qui regroupe les fonctionnalites de liaison avec une
Definition MorEqn.h:35
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