16#ifndef Eval_Amont_PolyMAC_CDO_Elem_included
17#define Eval_Amont_PolyMAC_CDO_Elem_included
19#include <Eval_Conv_PolyMAC_CDO.h>
20#include <Eval_PolyMAC_CDO_Elem.h>
67 inline double flux_face(
const DoubleTab&,
int,
const Symetrie&,
int)
const override {
return 0; }
74 inline void flux_face(
const DoubleTab&,
int,
const Symetrie&,
int, DoubleVect& flux)
const override { }
75 inline void flux_face(
const DoubleTab&,
int,
const Periodique&,
int, DoubleVect& flux)
const override;
85 inline void flux_faces_interne(
const DoubleTab&,
int, DoubleVect& flux)
const override;
142 inline void coeffs_face(
int,
int,
const Periodique&, DoubleVect& aii, DoubleVect& ajj)
const override;
164 int n0 =
elem_(face, 0);
165 int n1 =
elem_(face, 1);
169 double val_imp = la_cl.
val_imp(face - num1);
174 flux = psc * inco[n0];
176 flux = psc * val_imp;
181 flux = psc * val_imp;
183 flux = psc * inco[n1];
190 int i =
elem_(face, 0);
224 int n0 =
elem_(face, 0);
225 int n1 =
elem_(face, 1);
229 double val_imp = la_cl.
val_imp(face - num1);
234 flux = psc * inco[n0];
236 flux = psc * val_imp;
241 flux = psc * val_imp;
243 flux = psc * inco[n1];
250 int i =
elem_(face, 0);
258 flux = psc * la_cl.
val_imp(face - num1);
265 flux = psc * la_cl.
val_imp(face - num1);
275 int n0 =
elem_(face, 0);
276 int n1 =
elem_(face, 1);
279 double val_ext = la_cl.
val_ext(face - num1);
284 flux = psc * inco[n0];
286 flux = psc * val_ext;
291 flux = psc * val_ext;
293 flux = psc * inco[n1];
300 int i =
elem_(face, 0);
335 int n0 =
elem_(face, 0);
336 int n1 =
elem_(face, 1);
339 double val_ext = la_cl.
val_ext(face - num1);
344 flux = psc * inco[n0];
346 flux = psc * val_ext;
351 flux = psc * val_ext;
353 flux = psc * inco[n1];
361 int i =
elem_(face, 0);
367 flux = psc * la_cl.
val_ext(face - num1);
374 flux = psc * la_cl.
val_ext(face - num1);
386 flux = psc * inco(
elem_(face, 0));
388 flux = psc * inco(
elem_(face, 1));
414 flux = psc * inco(
elem_(face, 0));
416 flux = psc * inco(
elem_(face, 1));
425 flux = psc * inco(
elem_(face, 0));
427 flux = psc * inco(
elem_(face, 1));
451 flux = psc * inco(
elem_(face, 0));
453 flux = psc * inco(
elem_(face, 1));
461 int elem1 =
elem_(face, 0);
462 int elem2 =
elem_(face, 1);
465 for (k = 0; k < flux.
size(); k++)
466 flux(k) = -psc * inco(elem1, k);
468 for (k = 0; k < flux.
size(); k++)
469 flux(k) = -psc * inco(elem2, k);
478 for (k = 0; k < aii.
size(); k++)
480 for (k = 0; k < ajj.
size(); k++)
485 for (k = 0; k < ajj.
size(); k++)
487 for (k = 0; k < aii.
size(); k++)
495 int n0 =
elem_(face, 0);
496 int n1 =
elem_(face, 1);
501 for (k = 0; k < flux.
size(); k++)
502 flux(k) = -psc * inco(n0, k);
504 for (k = 0; k < flux.
size(); k++)
505 flux(k) = -psc * la_cl.
val_ext(face - num1, k);
510 for (k = 0; k < flux.
size(); k++)
511 flux(k) = -psc * la_cl.
val_ext(face - num1, k);
513 for (k = 0; k < flux.
size(); k++)
514 flux(k) = -psc * inco(n1, k);
521 int i =
elem_(face, 0);
528 for (k = 0; k < aii.
size(); k++)
530 for (k = 0; k < ajj.
size(); k++)
535 for (k = 0; k < aii.
size(); k++)
537 for (k = 0; k < ajj.
size(); k++)
545 for (k = 0; k < ajj.
size(); k++)
547 for (k = 0; k < aii.
size(); k++)
552 for (k = 0; k < ajj.
size(); k++)
554 for (k = 0; k < aii.
size(); k++)
563 int i =
elem_(face, 0);
568 for (k = 0; k < flux.
size(); k++)
569 flux(k) = -psc * la_cl.
val_ext(face - num1, k);
571 for (k = 0; k < flux.
size(); k++)
577 for (k = 0; k < flux.
size(); k++)
578 flux(k) = -psc * la_cl.
val_ext(face - num1, k);
580 for (k = 0; k < flux.
size(); k++)
588 int n0 =
elem_(face, 0);
589 int n1 =
elem_(face, 1);
594 for (k = 0; k < flux.
size(); k++)
595 flux(k) = -psc * inco(n0, k);
597 for (k = 0; k < flux.
size(); k++)
598 flux(k) = -psc * la_cl.
val_imp(face - num1, k);
603 for (k = 0; k < flux.
size(); k++)
604 flux(k) = -psc * la_cl.
val_imp(face - num1, k);
606 for (k = 0; k < flux.
size(); k++)
607 flux(k) = -psc * inco(n1, k);
614 int i =
elem_(face, 0);
620 for (k = 0; k < aii.
size(); k++)
622 for (k = 0; k < ajj.
size(); k++)
627 for (k = 0; k < aii.
size(); k++)
629 for (k = 0; k < ajj.
size(); k++)
637 for (k = 0; k < ajj.
size(); k++)
639 for (k = 0; k < aii.
size(); k++)
644 for (k = 0; k < ajj.
size(); k++)
646 for (k = 0; k < aii.
size(); k++)
655 int i =
elem_(face, 0);
660 for (k = 0; k < flux.
size(); k++)
661 flux(k) = -psc * la_cl.
val_imp(face - num1, k);
663 for (k = 0; k < flux.
size(); k++)
669 for (k = 0; k < flux.
size(); k++)
670 flux(k) = -psc * la_cl.
val_imp(face - num1, k);
672 for (k = 0; k < flux.
size(); k++)
680 int n0 =
elem_(face, 0);
681 int n1 =
elem_(face, 1);
684 for (k = 0; k < flux.
size(); k++)
685 flux(k) = -psc * inco(n0, k);
687 for (k = 0; k < flux.
size(); k++)
688 flux(k) = -psc * inco(n1, k);
697 for (k = 0; k < aii.
size(); k++)
699 for (k = 0; k < ajj.
size(); k++)
704 for (k = 0; k < ajj.
size(); k++)
706 for (k = 0; k < aii.
size(); k++)
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.
int calculer_flux_faces_paroi_fixe() const override
double coeffs_face_bloc_vitesse(const DoubleTab &, int, const Neumann_paroi &, int) const override
double coeffs_face_bloc_vitesse(const DoubleTab &, int, const Neumann_paroi_adiabatique &, int) const override
double secmem_face(int, const Neumann_paroi_adiabatique &, int) const override
void flux_face(const DoubleTab &, int, const Dirichlet_paroi_defilante &, int, DoubleVect &flux) const override
void coeffs_face(int, int, const Neumann_paroi &, double &aii, double &ajj) const override
double secmem_face(int, const Echange_global_impose &, int) const override
double coeffs_face_bloc_vitesse(const DoubleTab &, int, int, int, const Echange_externe_impose &, int) const override
int calculer_flux_faces_symetrie() const override
double flux_faces_interne(const DoubleTab &, int) const override
void coeffs_face(int, int, const Echange_global_impose &, double &aii, double &ajj) const override
double secmem_face(int, const Neumann_paroi &, int) const override
void flux_face(const DoubleTab &, int, const Neumann_paroi_adiabatique &, int, DoubleVect &flux) const override
double flux_face(const DoubleTab &, int, int, int, const Echange_externe_impose &, int) const override
void secmem_face(int, const Periodique &, int, DoubleVect &) const override
double secmem_face(int, const Dirichlet_paroi_defilante &, int) const override
void flux_face(const DoubleTab &, int, const Dirichlet_paroi_fixe &, int, DoubleVect &flux) const override
int calculer_flux_faces_paroi() const override
void flux_face(const DoubleTab &, int, const Symetrie &, int, DoubleVect &flux) const override
void coeffs_face(int, int, const Dirichlet_paroi_fixe &, double &aii, double &ajj) const override
void coeffs_face(int, int, const Dirichlet_paroi_defilante &, DoubleVect &aii, DoubleVect &ajj) const override
void coeffs_face(int, int, int, int, const Echange_externe_impose &, double &aii, double &ajj) const override
int calculer_flux_faces_echange_externe_impose() const override
double coeffs_faces_interne_bloc_vitesse(const DoubleTab &, int) const override
double flux_face(const DoubleTab &, int, const Dirichlet_paroi_fixe &, int) const override
Eval_Amont_PolyMAC_CDO_Elem()
void secmem_face(int, const Dirichlet_paroi_fixe &, int, DoubleVect &) const override
void secmem_faces_interne(int, DoubleVect &flux) const override
int calculer_flux_faces_echange_global_impose() const override
void coeffs_face(int, int, const Symetrie &, double &aii, double &ajj) const override
double flux_face(const DoubleTab &, int, const Neumann_paroi &, int) const override
int calculer_flux_faces_entree_fluide() const override
void secmem_face(int, const Neumann_paroi &, int, DoubleVect &) const override
void secmem_face(int, const Echange_global_impose &, int, DoubleVect &) const override
double secmem_face(int, int, int, const Echange_externe_impose &, int) const override
int calculer_flux_faces_paroi_defilante() const override
void coeffs_face(int, int, const Echange_global_impose &, DoubleVect &aii, DoubleVect &ajj) const override
void coeffs_face(int, int, const Neumann_paroi &, DoubleVect &aii, DoubleVect &ajj) const override
double flux_face(const DoubleTab &, int, const Neumann_paroi_adiabatique &, int) const override
double flux_face(const DoubleTab &, int, const Dirichlet_entree_fluide &, int) const override
void coeffs_face(int, int, const Symetrie &, DoubleVect &aii, DoubleVect &ajj) const override
double flux_face(const DoubleTab &, int, const Symetrie &, int) const override
void coeffs_faces_interne(int, double &aii, double &ajj) const override
void flux_face(const DoubleTab &, int, int, int, const Echange_externe_impose &, int, DoubleVect &flux) const override
void coeffs_face(int, int, const Neumann_paroi_adiabatique &, DoubleVect &aii, DoubleVect &ajj) const override
int calculer_flux_faces_sortie_libre() const override
double secmem_face(int, const Dirichlet_paroi_fixe &, int) const override
double coeffs_face_bloc_vitesse(const DoubleTab &, int, const Dirichlet_paroi_fixe &, 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_fixe &, DoubleVect &aii, DoubleVect &ajj) const override
double coeffs_face_bloc_vitesse(const DoubleTab &, int, const Dirichlet_entree_fluide &, int) const override
double secmem_face(int, const Periodique &, int) const override
int calculer_flux_faces_paroi_adiabatique() const override
double coeffs_face_bloc_vitesse(const DoubleTab &, int, const Echange_global_impose &, int) const override
double coeffs_face_bloc_vitesse(const DoubleTab &, int, const Symetrie &, int) const override
void coeffs_face(int, int, int, int, const Echange_externe_impose &, DoubleVect &aii, DoubleVect &ajj) const override
void coeffs_face(int, int, const Neumann_paroi_adiabatique &, double &aii, double &ajj) const override
void secmem_face(int, int, int, const Echange_externe_impose &, int, DoubleVect &) const override
double secmem_face(int, const Symetrie &, int) const override
double flux_face(const DoubleTab &, int, const Dirichlet_paroi_defilante &, int) 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 secmem_face(int, const Neumann_paroi_adiabatique &, int, DoubleVect &) const override
double flux_face(const DoubleTab &, int, const Echange_global_impose &, int) const override
double coeffs_face_bloc_vitesse(const DoubleTab &, int, const Dirichlet_paroi_defilante &, int) const override
void coeffs_face(int, int, const Dirichlet_paroi_defilante &, double &aii, double &ajj) const override
int calculer_flux_faces_periodique() const override
double secmem_faces_interne(int) const override
Eval_Conv_PolyMAC_CDO()
constructeur par defaut
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: