16#include <Courant_impose.h>
17#include <Domaine_Cl_dis_base.h>
18#include <Equation_base.h>
19#include <Cahn_Hilliard.h>
20#include <Probleme_base.h>
21#include <Milieu_base.h>
22#include <Espece_intercalee.h>
35 Cerr <<
"*** Boundary conditions : Imposed courant for Lithium-ion Batteries case (only Cahn-Hilliard has been added yet) ***" << finl;
46 le_champ_front.typer(
"Champ_front_fonc");
47 le_champ_front->nommer(
"Courant_impose");
64 le_champ_front->fixer_nb_comp(dim_champ);
67 le_champ_front->verifier(*
this);
74 Cerr <<
"[Courant_impose::verifie_ch_init_nb_comp()] ..." << finl;
79 const int nb_comp = le_champ_front->nb_comp();
89 Cerr <<
"[Courant_impose::completer()] ..." << finl;
96 le_champ_front->valeurs().resize(
nb_faces_,dim_champ);
100 le_champ_front->set_instationnaire(
true);
103 if (le_champ_front->instationnaire())
104 Cerr <<
"[Courant_impose] : Instationnary field OK." << finl;
107 Cerr <<
"[Courant_impose] : Stationnary field... Not normal." << finl;
131 double mu_el(0.), numer(0.), denom(0.), numer_tot(0.), denom_tot(0.);
133 DoubleTab& courant(le_champ_front->valeurs());
137 double i0 = mil.
i0();
141 double S(0.), S_tot(0.), ds(0.);
145 for (
int j=0; j<nb_couches; j++)
146 for (
int face = 0; face <
nb_faces_; face++)
148 int facegl = face +
ndeb_;
155 numer += c(elem,j)*(1.-c(elem,j))*mutilde(elem,j)*ds;
156 denom += c(elem,j)*(1.-c(elem,j))*ds;
164 numer_tot =
mp_sum(numer);
167 denom_tot =
mp_sum(denom);
175 mu_el = ( ((
Iimp_/i0) * T_sur_Tref) + numer_tot ) / denom_tot;
179 const double constante = damkohler/(T_sur_Tref);
182 for (
int j=0; j<nb_couches; j++)
183 for (
int face = 0; face <
nb_faces_; face++)
185 int facegl = face +
ndeb_;
189 courant(face,j) = constante * c(elem,j)*(1.-c(elem,j))*(mu_el - mutilde(elem,j));
std::vector< Nom > supp_discs
Domaine_Cl_dis_base & domaine_Cl_dis()
Renvoie le domaine des conditions aux limites discretisee dont l'objet fait partie.
std::vector< Motcle > app_domains
virtual Frontiere_dis_base & frontiere_dis()
Renvoie la frontiere discretisee a laquelle les conditions aux limites s'appliquent.
Classe Courant_impose Cette condition limite correspond a un courant imposé. Utile uniquement dans le...
void verifie_ch_init_nb_comp() const override
Appel la verification du champ lu par l intermediaire de l equation pour laquelle on considere la con...
void mettre_a_jour_courant(const DoubleTab &, const DoubleTab &)
Met a jour les conditions aux limites sur le courant (spécifique à cette classe).
double flux_impose(int i) const override
Renvoie la valeur du flux impose sur la i-eme composante du champ representant le flux a la frontiere...
void completer() override
NE FAIT RIEN A surcharger dans les classes derivees.
void associer_domaine_cl_dis_base(const Domaine_Cl_dis_base &) override
Associe le Domaine_Cl_dis_base (Domaine des conditions aux limites discretisees) a l'objet.
classe Domaine_Cl_dis_base Les objets Domaine_Cl_dis_base representent les conditions aux limites
virtual const DoubleVect & face_surfaces() const
int face_voisins(int num_face, int i) const
renvoie l'element voisin de numface dans la direction i.
Class defining operators and methods for all reading operation in an input flow (file,...
classe Equation_base Le role d'une equation est le calcul d'un ou plusieurs champs....
virtual const Milieu_base & milieu() const =0
virtual const Champ_Inc_base & inconnue() const =0
virtual void verifie_ch_init_nb_comp_cl(const Champ_Inc_base &ch_ref, const int nb_comp, const Cond_lim_base &cl) const
virtual int nb_comp() const
virtual const Equation_base & equation(const std::string &nom_inc) const
const Equation_base & equation() const
Renvoie la reference sur l'equation pointe par MorEqn::mon_equation.
Classe Neumann_paroi Cette condition limite correspond a un flux impose pour l'equation de.
virtual double flux_impose(int i) const
Renvoie la valeur du flux impose sur la i-eme composante du champ representant le flux a la frontiere...
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.
static double mp_sum(double)
Calcule la somme de x sur tous les processeurs du groupe courant.
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
Classe de base des flux de sortie.