16#ifndef Eval_centre_PolyMAC_CDO_Elem_included
17#define Eval_centre_PolyMAC_CDO_Elem_included
19#include <Eval_Conv_PolyMAC_CDO.h>
20#include <Eval_PolyMAC_CDO_Elem.h>
21#include <Domaine_PolyMAC_CDO.h>
22#include <Champ_Elem_PolyMAC_CDO.h>
63 inline double flux_face(
const DoubleTab&,
int,
const Symetrie&,
int)
const override {
return 0; }
70 inline void flux_face(
const DoubleTab&,
int,
const Symetrie&,
int, DoubleVect& flux)
const override { }
71 inline void flux_face(
const DoubleTab&,
int,
const Periodique&,
int, DoubleVect& flux)
const override;
81 inline void flux_faces_interne(
const DoubleTab&,
int, DoubleVect& flux)
const override;
125 inline void coeffs_face(
int,
int,
const Periodique&, DoubleVect& aii, DoubleVect& ajj)
const override;
147 inline double qcentre(
const double,
const int,
const int,
const int,
const int,
const int,
const DoubleTab&)
const;
148 inline void qcentre(
const double,
const int,
const int,
const int,
const int,
const int,
const DoubleTab&, ArrOfDouble&)
const;
154 int n0 =
elem_(face, 0);
155 int n1 =
elem_(face, 1);
158 double T_imp = la_cl.
val_imp(face - num1);
162 flux = psc * inco[n0];
171 flux = psc * inco[n1];
178 int i =
elem_(face, 0);
195 int i =
elem_(face, 0);
198 double T_imp = la_cl.
val_imp(face - num1);
214 int n0 =
elem_(face, 0);
215 int n1 =
elem_(face, 1);
221 flux = psc * inco[n0];
223 flux = psc * la_cl.
val_ext(face - num1);
228 flux = psc * la_cl.
val_ext(face - num1);
230 flux = psc * inco[n1];
237 int i =
elem_(face, 0);
254 int i =
elem_(face, 0);
259 flux = psc * la_cl.
val_ext(face - num1);
264 flux = psc * la_cl.
val_ext(face - num1);
275 int n0 =
elem_(face, 0);
276 int n1 =
elem_(face, 1);
281 flux =
qcentre(psc, n0, n1, n0_0, n1_1, face, inco);
289 int i =
elem_(face, 0);
290 int j =
elem_(face, 1);
297 aii = -
qcentre(psc, i, j, i0_0, j1_1, face, inconnue->valeurs());
299 ajj = -
qcentre(psc, i, j, i0_0, j1_1, face, inconnue->valeurs());
306 int n0 =
elem_(face, 0);
307 int n1 =
elem_(face, 1);
311 flux =
qcentre(psc, n0, n1, n0_0, n1_1, face, inco);
317 int i =
elem_(face, 0);
318 int j =
elem_(face, 1);
323 if ((i0_0 == -1) || (j1_1 == -1))
331 aii = -
qcentre(psc, i, j, i0_0, j1_1, face, inconnue->valeurs());
333 ajj = -
qcentre(psc, i, j, i0_0, j1_1, face, inconnue->valeurs());
339 int n0 =
elem_(face, 0);
340 int n1 =
elem_(face, 1);
346 for (k = 0; k < flux.
size(); k++)
347 flux(k) = -psc * inco(n0, k);
349 for (k = 0; k < flux.
size(); k++)
350 flux(k) = -psc * la_cl.
val_imp(face - num1, k);
355 for (k = 0; k < flux.
size(); k++)
356 flux(k) = -psc * la_cl.
val_imp(face - num1, k);
358 for (k = 0; k < flux.
size(); k++)
359 flux(k) = -psc * inco(n1, k);
366 int i =
elem_(face, 0);
371 for (k = 0; k < aii.
size(); k++)
377 for (k = 0; k < ajj.
size(); k++)
385 int i =
elem_(face, 0);
390 for (k = 0; k < flux.
size(); k++)
391 flux(k) = -psc * la_cl.
val_imp(face - num1);
396 for (k = 0; k < flux.
size(); k++)
397 flux(k) = -psc * la_cl.
val_imp(face - num1);
404 int n0 =
elem_(face, 0);
405 int n1 =
elem_(face, 1);
410 for (k = 0; k < flux.
size(); k++)
411 flux(k) = -psc * inco(n0, k);
413 for (k = 0; k < flux.
size(); k++)
414 flux(k) = -psc * la_cl.
val_ext(face - num1, k);
419 for (k = 0; k < flux.
size(); k++)
420 flux(k) = -psc * la_cl.
val_ext(face - num1, k);
422 for (k = 0; k < flux.
size(); k++)
423 flux(k) = -psc * inco(n1, k);
430 int i =
elem_(face, 0);
435 for (k = 0; k < aii.
size(); k++)
441 for (k = 0; k < ajj.
size(); k++)
449 int i =
elem_(face, 0);
454 for (k = 0; k < flux.
size(); k++)
455 flux(k) = -psc * la_cl.
val_ext(face - num1);
460 for (k = 0; k < flux.
size(); k++)
461 flux(k) = -psc * la_cl.
val_ext(face - num1);
469 int n0 =
elem_(face, 0);
470 int n1 =
elem_(face, 1);
475 qcentre(psc, n0, n1, n0_0, n1_1, face, inco, flux);
476 for (k = 0; k < flux.
size(); k++)
483 int i =
elem_(face, 0);
484 int j =
elem_(face, 1);
488 ArrOfDouble flux(aii.
size());
491 qcentre(psc, i, j, i0_0, j1_1, face, inconnue->valeurs(), flux);
493 for (k = 0; k < aii.
size(); k++)
496 for (k = 0; k < ajj.
size(); k++)
504 int n0 =
elem_(face, 0);
505 int n1 =
elem_(face, 1);
509 qcentre(psc, n0, n1, n0_0, n1_1, face, inco, flux);
510 for (k = 0; k < flux.
size(); k++)
517 int i =
elem_(face, 0);
518 int j =
elem_(face, 1);
522 ArrOfDouble flux(aii.
size());
524 qcentre(psc, i, j, i0_0, j1_1, face, inconnue->valeurs(), flux);
526 for (k = 0; k < aii.
size(); k++)
529 for (k = 0; k < ajj.
size(); k++)
542 double T0 = transporte[num0];
543 double T1 = transporte[num1];
545 flux = 0.5 * (T0 + T1);
551 ArrOfDouble& flux)
const
557 ArrOfDouble T0(ncomp);
558 ArrOfDouble T0_0(ncomp);
559 ArrOfDouble T1(ncomp);
560 ArrOfDouble T1_1(ncomp);
562 for (k = 0; k < ncomp; k++)
564 T0[k] = transporte(num0, k);
565 T0_0[k] = transporte(num0_0, k);
566 T1[k] = transporte(num1, k);
567 T1_1[k] = transporte(num1_1, k);
570 for (k = 0; k < ncomp; k++)
571 flux[k] = 0.5 * (T0[k] + T1[k]) * psc;
classe Dirichlet_entree_fluide Cette classe represente une condition aux limite imposant une grandeur
classe Dirichlet_paroi_defilante Impose la vitesse de paroi dnas une equation de type Navier_Stokes.
classe Dirichlet_paroi_fixe Represente une paroi immobile dans une equation de type Navier_Stokes.
virtual double val_imp(int i) const
Renvoie la valeur imposee sur la i-eme composante du champ a la frontiere au temps par defaut du cham...
Classe Echange_externe_impose: Cette classe represente le cas particulier de la classe.
Classe Echange_global_impose Cette classe represente le cas particulier de la classe.
Eval_Conv_PolyMAC_CDO()
constructeur par defaut
double flux_faces_interne(const DoubleTab &, int) const override
int calculer_flux_faces_paroi() const override
int calculer_flux_faces_entree_fluide() const override
void coeffs_faces_interne(int, double &aii, double &ajj) const override
void coeffs_face(int, int, const Neumann_paroi &, DoubleVect &aii, DoubleVect &ajj) const override
void coeffs_face(int, int, const Neumann_paroi_adiabatique &, double &aii, double &ajj) const override
void flux_face(const DoubleTab &, int, int, int, const Echange_externe_impose &, int, DoubleVect &flux) const override
int calculer_flux_faces_sortie_libre() const override
double flux_face(const DoubleTab &, int, const Dirichlet_paroi_fixe &, int) const override
void flux_face(const DoubleTab &, int, const Dirichlet_paroi_defilante &, int, DoubleVect &flux) const override
double flux_face(const DoubleTab &, int, int, int, const Echange_externe_impose &, int) const override
double secmem_face(int, const Dirichlet_paroi_fixe &, int) const override
int calculer_flux_faces_paroi_defilante() const override
int calculer_flux_faces_symetrie() const override
Eval_centre_PolyMAC_CDO_Elem()
double flux_face(const DoubleTab &, int, const Echange_global_impose &, int) const override
void coeffs_face(int, int, const Neumann_paroi_adiabatique &, DoubleVect &aii, DoubleVect &ajj) const override
double flux_face(const DoubleTab &, int, const Symetrie &, int) const override
void coeffs_face(int, int, const Symetrie &, DoubleVect &aii, DoubleVect &ajj) const override
double secmem_faces_interne(int) const override
void coeffs_face(int, int, const Dirichlet_paroi_defilante &, DoubleVect &aii, DoubleVect &ajj) const override
void coeffs_face(int, int, const Dirichlet_paroi_fixe &, DoubleVect &aii, DoubleVect &ajj) const override
void coeffs_face(int, int, const Symetrie &, double &aii, double &ajj) const override
void secmem_face(int, int, int, const Echange_externe_impose &, int, DoubleVect &) const override
void secmem_face(int, const Neumann_paroi &, int, DoubleVect &) const override
void secmem_face(int, const Neumann_paroi_adiabatique &, int, DoubleVect &) const override
int calculer_flux_faces_periodique() const override
double secmem_face(int, const Echange_global_impose &, int) const override
void flux_face(const DoubleTab &, int, const Neumann_paroi &, int, DoubleVect &flux) const override
void coeffs_face(int, int, const Dirichlet_paroi_defilante &, double &aii, double &ajj) const override
void flux_face(const DoubleTab &, int, const Neumann_paroi_adiabatique &, int, DoubleVect &flux) const override
int calculer_flux_faces_echange_global_impose() const override
void secmem_faces_interne(int, DoubleVect &) const override
void secmem_face(int, const Echange_global_impose &, int, DoubleVect &) const override
int amont_amont(int, int) const
void coeffs_face(int, int, int, int, const Echange_externe_impose &, DoubleVect &aii, DoubleVect &ajj) const override
double flux_face(const DoubleTab &, int, const Dirichlet_paroi_defilante &, int) const override
double secmem_face(int, const Periodique &, int) const override
void secmem_face(int, const Dirichlet_paroi_fixe &, int, DoubleVect &) const override
double secmem_face(int, int, int, const Echange_externe_impose &, int) const override
void coeffs_face(int, int, const Dirichlet_paroi_fixe &, double &aii, double &ajj) const override
int calculer_flux_faces_echange_externe_impose() const override
double flux_face(const DoubleTab &, int, const Dirichlet_entree_fluide &, int) const override
void coeffs_face(int, int, const Echange_global_impose &, DoubleVect &aii, DoubleVect &ajj) const override
double secmem_face(int, const Neumann_paroi &, int) const override
void coeffs_face(int, int, int, int, const Echange_externe_impose &, double &aii, double &ajj) const override
int calculer_flux_faces_paroi_adiabatique() const override
void flux_face(const DoubleTab &, int, const Symetrie &, int, DoubleVect &flux) const override
double secmem_face(int, const Dirichlet_paroi_defilante &, int) const override
void secmem_face(int, const Periodique &, int, DoubleVect &) const override
void secmem_face(int, const Symetrie &, int, DoubleVect &) const override
void secmem_face(int, const Dirichlet_paroi_defilante &, int, DoubleVect &) const override
void flux_face(const DoubleTab &, int, const Echange_global_impose &, int, DoubleVect &flux) const override
void flux_face(const DoubleTab &, int, const Dirichlet_paroi_fixe &, int, DoubleVect &flux) const override
void coeffs_face(int, int, const Echange_global_impose &, double &aii, double &ajj) const override
double flux_face(const DoubleTab &, int, const Neumann_paroi &, int) const override
double flux_face(const DoubleTab &, int, const Neumann_paroi_adiabatique &, int) const override
double qcentre(const double, const int, const int, const int, const int, const int, const DoubleTab &) const
void coeffs_face(int, int, const Neumann_paroi &, double &aii, double &ajj) const override
double secmem_face(int, const Neumann_paroi_adiabatique &, int) const override
int calculer_flux_faces_paroi_fixe() const override
double secmem_face(int, const Symetrie &, int) const override
Classe Neumann_paroi_adiabatique Cette condition limite correspond a une paroi adiabatique dans une.
Classe Neumann_paroi Cette condition limite correspond a un flux impose pour l'equation de.
classe Neumann_sortie_libre Cette classe represente une frontiere ouverte sans vitesse imposee
double val_ext(int i) const override
Renvoie la valeur de la i-eme composante du champ impose a l'exterieur de la frontiere.
classe Periodique Cette classe represente une condition aux limites periodique.
classe Symetrie Sur les faces de symetrie on a les proprietes suivantes:
_SIZE_ size_array() const