16#include <Cond_lim_utilisateur_base.h>
17#include <Domaine_Cl_dis_base.h>
18#include <Frontiere_dis_base.h>
19#include <Schema_Temps_base.h>
20#include <Equation_base.h>
21#include <Probleme_base.h>
46 Motcle accolade_ouverte(
"{");
47 Motcle accolade_fermee(
"}");
51 if (motlu != accolade_ouverte)
53 Cerr <<
"Error while reading the boundaries conditions\n";
54 Cerr <<
"We expected a " << accolade_ouverte <<
" instead of \n"
60 IntTab front_deja_lu(n);
71 if (motlu == accolade_fermee)
75 Journal()<<
"Reading the boundary condition " << nomlu <<finl;
81 if (front_deja_lu(rang) == 0)
82 front_deja_lu(rang) = 1;
86 Cerr <<
"Error in the data set "<<finl;
87 Cerr <<
"the boundary condition associated"<<finl;
88 Cerr <<
"to the boundary "<< nomlu <<
"is read twice !!"<<finl;
98 Cond_lim_utilisateur_base& la_cl=ref_cast(Cond_lim_utilisateur_base,
les_conditions_limites(rang).valeur());
100 Cond_lim* sa=&(la_cl.
la_cl());
113 const Frontiere& frontiere=ledomaine.
frontiere(rang);
116 Cerr<<
"At least one connection (adjacent boundary on two domains) is of type 'Raccord distant homogene'." << finl;
117 Cerr<<
"Use 'Raccord local homogene' to define the connections in sequential computing"<<finl;
118 Cerr<<
"And 'Raccord distant homogene' for the connections in parallel computing." << finl;
127 Cerr <<
"It misses " << n-nb_clim <<
" boundaries conditions " << finl;
128 Cerr <<
"We read " << nb_clim <<
" boundaries conditions " << finl;
129 Cerr <<
"We waited " << n <<
" boundary conditions " << finl;
132 for (
int num_cl=0; num_cl<nb_clim; num_cl++)
154 if (itr.get_info()->has_base(type))
return 1;
321 if (face_globale==faces_virt[j])
341 if (fr.
le_nom()==frontiere)
359 if (fr.
le_nom()==frontiere)
375 if (champ.instationnaire()) champ.calculer_derivee_en_temps(t1,t2);
455 assert(num_face >= 0);
458 for (i = 0; i < nb_cl; i++)
465 if (num_face >= num_premiere_face && num_face < num_premiere_face + nb_faces)
470 Cerr <<
"Error in Domaine_Cl_dis_base::la_cl_de_la_face(num_face="
471 << num_face <<
")\n This face is not on a boundary of cond_lim."
classe Champ_front_base Classe de base pour la hierarchie des champs aux frontieres.
classe Cond_lim_base Classe de base pour la hierarchie des classes qui representent les differentes c...
virtual void mettre_a_jour(double temps)
Effectue une mise a jour en temps de la condition aux limites.
virtual int a_mettre_a_jour_ss_pas_dt()
Cette methode indique si cette condition aux limites doit etre mise a jour dans des sous pas de temps...
virtual Frontiere_dis_base & frontiere_dis()
Renvoie la frontiere discretisee a laquelle les conditions aux limites s'appliquent.
void lire(Entree &, Equation_base &, const Nom &nom_bord)
classe Cond_lim Classe generique servant a representer n'importe quelle classe
classe Conds_lim Cette classe represente un vecteur de conditions aux limites.
int_t nb_faces_frontiere() const
Renvoie le nombre de faces frontiere du domaine (somme des nombres de bords, de raccords et de bords ...
int rang_frontiere(const Nom &) const
const Frontiere_t & frontiere(int i) const
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 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.
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.
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.
Conds_lim les_conditions_limites_
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.
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.
const Domaine & domaine() const
void ecrire_noms_bords(Sortie &) const
Ecriture des noms des bords sur un flot de sortie.
Class defining operators and methods for all reading operation in an input flow (file,...
Probleme_base & probleme()
Renvoie le probleme associe a l'equation.
Domaine_dis_base & domaine_dis()
Renvoie le domaine discretise associe a l'equation.
const ArrOfInt_t & get_faces_virt() const
int_t num_premiere_face() const
const Nom & le_nom() const override
Donne le nom de l'Objet_U Methode a surcharger : renvoie "neant" dans cette implementation.
int_t nb_faces() const
Renvoie le nombre de faces de la frontiere.
const Frontiere & frontiere() const
Renvoie la frontiere geometrique associee.
const Equation_base & equation() const
Renvoie la reference sur l'equation pointe par MorEqn::mon_equation.
class Nom Une chaine de caractere pour nommer les objets de TRUST
classe Objet_U Cette classe est la classe de base des Objets de TRUST
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.
const Nom & le_nom() const override
Donne le nom de l'Objet_U Methode a surcharger : renvoie "neant" dans cette implementation.
static Sortie & Journal(int message_level=0)
Renvoie un objet statique de type Sortie qui sert de journal d'evenements.
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
static bool is_sequential()
Classe de base des flux de sortie.
_SIZE_ size_array() const