TrioCFD 1.9.8
TrioCFD documentation
Loading...
Searching...
No Matches
Loi_Fermeture_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 Loi_Fermeture_base_included
17#define Loi_Fermeture_base_included
18
19#include <Champs_compris_interface.h>
20#include <Champs_compris.h>
21#include <TRUST_Ref.h>
22
24class Probleme_base;
25class Champ_base;
26class Motcle;
27class Param;
28
29/*! @brief : Classe de base des lois de fermetures.
30 *
31 * Cette classe calcule des champs qui peuvent dependre
32 * de plusieurs inconnues, de grandeurs physiques du milieu etc.
33 * Les champs de la classe sont rendus accessibles a tout le probleme
34 * a travers la methode get_champ() et leur mise a jour est declenchee
35 * par le probleme, apres la mise a jour du milieu et des equations.
36 *
37 */
39{
40 Declare_base(Loi_Fermeture_base);
41public:
42 // Reimplementation de Objet_U
43 void nommer(const Nom& nom) override
44 {
45 nom_ = nom;
46 }
47 const Nom& le_nom () const override
48 {
49 return nom_;
50 }
51 // Implementation des methodes de Champs_compris_interface:
52 void creer_champ(const Motcle& motlu) override { }
53 const Champ_base& get_champ(const Motcle& nom) const override;
54 bool has_champ(const Motcle& nom, OBS_PTR(Champ_base)& ref_champ) const override;
55 bool has_champ(const Motcle& nom) const override;
56 void get_noms_champs_postraitables(Noms& nom, Option opt=NONE) const override;
57 // Nouvelles methodes:
58 virtual void associer_pb_base(const Probleme_base&);
59 virtual void discretiser(const Discretisation_base& );
60 virtual void set_param(Param& param) const override;
61 virtual void completer();
62 virtual void preparer_calcul();
63 virtual void mettre_a_jour(double temps);
64
65protected:
66 const Probleme_base& mon_probleme() const;
67 Champs_compris champs_compris_;
68
71
72
73private:
74 Nom nom_;
75 // Prive car ce membre donne acces au probleme non const. On le cache.
76 OBS_PTR(Probleme_base) mon_probleme_;
77
78
79
80};
81
82
83#endif
classe Champ_base Cette classe est la base de la hierarchie des champs.
Definition Champ_base.h:43
classe Champs_compris_interface Cette classe contient une interface de methodes destinees a gerer
classe Discretisation_base Cette classe represente un schema de discretisation en espace,...
: Classe de base des lois de fermetures.
const Champ_base & get_champ(const Motcle &nom) const override
Cette methode renvoie le champ de nom "nom" s'il est compris par la classe, sinon appelle la methode ...
virtual void discretiser(const Discretisation_base &)
Cette methode est appelee par le probleme apres la discretisation des equations et du milieu et avant...
const Probleme_base & mon_probleme() const
Renvoie le probleme (j'ai cree cette methode pour ne pas donner acces au probleme en ecriture par la ...
void nommer(const Nom &nom) override
Donne un nom a l'Objet_U Methode virtuelle a surcharger.
const Nom & le_nom() const override
Donne le nom de l'Objet_U Methode a surcharger : renvoie "neant" dans cette implementation.
virtual void associer_pb_base(const Probleme_base &)
Cette methode est la premiere appelee par le probleme pour construire l'objet au moment ou on l'assoc...
virtual void preparer_calcul()
Cette methode est appelee par le probleme apres preparer_calcul() des equations et du milieu.
virtual void set_param(Param &param) const override
Cette methode est appelee par le readOn de la classe.
Champs_compris champs_compris_
void creer_champ(const Motcle &motlu) override
bool has_champ(const Motcle &nom, OBS_PTR(Champ_base)&ref_champ) const override
virtual void completer()
Cette methode est appelee apres avoir lu toutes les equations et les lois de fermeture (tous les cham...
void get_noms_champs_postraitables(Noms &nom, Option opt=NONE) const override
virtual void mettre_a_jour(double temps)
Cette methode est appelee par le probleme apres mettre_a_jour() des equations et du milieu.
Une chaine de caractere (Nom) en majuscules.
Definition Motcle.h:26
class Nom Une chaine de caractere pour nommer les objets de TRUST
Definition Nom.h:31
Un tableau de chaine de caracteres (VECT(Nom)).
Definition Noms.h:26
Objet_U()
Constructeur par defaut : attribue un numero d'identifiant unique a l'objet (object_id_),...
Definition Objet_U.cpp:55
Helper class to factorize the readOn method of Objet_U classes.
Definition Param.h:112
classe Probleme_base C'est un Probleme_U qui n'est pas un couplage.