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>
65 inline double flux_face(
const DoubleTab&,
int,
const Symetrie&,
int)
const override {
return 0; }
72 inline void flux_face(
const DoubleTab&,
int,
const Symetrie&,
int, DoubleVect& flux)
const override { }
73 inline void flux_face(
const DoubleTab&,
int,
const Periodique&,
int, DoubleVect& flux)
const override;
83 inline void flux_faces_interne(
const DoubleTab&,
int, DoubleVect& flux)
const override;
140 inline void coeffs_face(
int,
int,
const Periodique&, DoubleVect& aii, DoubleVect& ajj)
const override;
162 int n0 =
elem_(face, 0);
163 int n1 =
elem_(face, 1);
167 double val_imp = la_cl.
val_imp(face - num1);
172 flux = psc * inco[n0];
174 flux = psc * val_imp;
179 flux = psc * val_imp;
181 flux = psc * inco[n1];
188 int i =
elem_(face, 0);
222 int n0 =
elem_(face, 0);
223 int n1 =
elem_(face, 1);
227 double val_imp = la_cl.
val_imp(face - num1);
232 flux = psc * inco[n0];
234 flux = psc * val_imp;
239 flux = psc * val_imp;
241 flux = psc * inco[n1];
248 int i =
elem_(face, 0);
256 flux = psc * la_cl.
val_imp(face - num1);
263 flux = psc * la_cl.
val_imp(face - num1);
273 int n0 =
elem_(face, 0);
274 int n1 =
elem_(face, 1);
277 double val_ext = la_cl.
val_ext(face - num1);
282 flux = psc * inco[n0];
284 flux = psc * val_ext;
289 flux = psc * val_ext;
291 flux = psc * inco[n1];
298 int i =
elem_(face, 0);
333 int n0 =
elem_(face, 0);
334 int n1 =
elem_(face, 1);
337 double val_ext = la_cl.
val_ext(face - num1);
342 flux = psc * inco[n0];
344 flux = psc * val_ext;
349 flux = psc * val_ext;
351 flux = psc * inco[n1];
359 int i =
elem_(face, 0);
365 flux = psc * la_cl.
val_ext(face - num1);
372 flux = psc * la_cl.
val_ext(face - num1);
384 flux = psc * inco(
elem_(face, 0));
386 flux = psc * inco(
elem_(face, 1));
412 flux = psc * inco(
elem_(face, 0));
414 flux = psc * inco(
elem_(face, 1));
423 flux = psc * inco(
elem_(face, 0));
425 flux = psc * inco(
elem_(face, 1));
449 flux = psc * inco(
elem_(face, 0));
451 flux = psc * inco(
elem_(face, 1));
459 int elem1 =
elem_(face, 0);
460 int elem2 =
elem_(face, 1);
463 for (k = 0; k < flux.
size(); k++)
464 flux(k) = -psc * inco(elem1, k);
466 for (k = 0; k < flux.
size(); k++)
467 flux(k) = -psc * inco(elem2, k);
476 for (k = 0; k < aii.
size(); k++)
478 for (k = 0; k < ajj.
size(); k++)
483 for (k = 0; k < ajj.
size(); k++)
485 for (k = 0; k < aii.
size(); k++)
493 int n0 =
elem_(face, 0);
494 int n1 =
elem_(face, 1);
499 for (k = 0; k < flux.
size(); k++)
500 flux(k) = -psc * inco(n0, k);
502 for (k = 0; k < flux.
size(); k++)
503 flux(k) = -psc * la_cl.
val_ext(face - num1, k);
508 for (k = 0; k < flux.
size(); k++)
509 flux(k) = -psc * la_cl.
val_ext(face - num1, k);
511 for (k = 0; k < flux.
size(); k++)
512 flux(k) = -psc * inco(n1, k);
519 int i =
elem_(face, 0);
526 for (k = 0; k < aii.
size(); k++)
528 for (k = 0; k < ajj.
size(); k++)
533 for (k = 0; k < aii.
size(); k++)
535 for (k = 0; k < ajj.
size(); k++)
543 for (k = 0; k < ajj.
size(); k++)
545 for (k = 0; k < aii.
size(); k++)
550 for (k = 0; k < ajj.
size(); k++)
552 for (k = 0; k < aii.
size(); k++)
561 int i =
elem_(face, 0);
566 for (k = 0; k < flux.
size(); k++)
567 flux(k) = -psc * la_cl.
val_ext(face - num1, k);
569 for (k = 0; k < flux.
size(); k++)
575 for (k = 0; k < flux.
size(); k++)
576 flux(k) = -psc * la_cl.
val_ext(face - num1, k);
578 for (k = 0; k < flux.
size(); k++)
586 int n0 =
elem_(face, 0);
587 int n1 =
elem_(face, 1);
592 for (k = 0; k < flux.
size(); k++)
593 flux(k) = -psc * inco(n0, k);
595 for (k = 0; k < flux.
size(); k++)
596 flux(k) = -psc * la_cl.
val_imp(face - num1, k);
601 for (k = 0; k < flux.
size(); k++)
602 flux(k) = -psc * la_cl.
val_imp(face - num1, k);
604 for (k = 0; k < flux.
size(); k++)
605 flux(k) = -psc * inco(n1, k);
612 int i =
elem_(face, 0);
618 for (k = 0; k < aii.
size(); k++)
620 for (k = 0; k < ajj.
size(); k++)
625 for (k = 0; k < aii.
size(); k++)
627 for (k = 0; k < ajj.
size(); k++)
635 for (k = 0; k < ajj.
size(); k++)
637 for (k = 0; k < aii.
size(); k++)
642 for (k = 0; k < ajj.
size(); k++)
644 for (k = 0; k < aii.
size(); k++)
653 int i =
elem_(face, 0);
658 for (k = 0; k < flux.
size(); k++)
659 flux(k) = -psc * la_cl.
val_imp(face - num1, k);
661 for (k = 0; k < flux.
size(); k++)
667 for (k = 0; k < flux.
size(); k++)
668 flux(k) = -psc * la_cl.
val_imp(face - num1, k);
670 for (k = 0; k < flux.
size(); k++)
678 int n0 =
elem_(face, 0);
679 int n1 =
elem_(face, 1);
682 for (k = 0; k < flux.
size(); k++)
683 flux(k) = -psc * inco(n0, k);
685 for (k = 0; k < flux.
size(); k++)
686 flux(k) = -psc * inco(n1, k);
695 for (k = 0; k < aii.
size(); k++)
697 for (k = 0; k < ajj.
size(); k++)
702 for (k = 0; k < ajj.
size(); k++)
704 for (k = 0; k < aii.
size(); k++)
Dirichlet_entree_fluide This class represents a boundary condition imposing a quantity.
Dirichlet_paroi_defilante Imposes the wall velocity in an equation of type Navier_Stokes.
Dirichlet_paroi_fixe Represents a fixed wall in a Navier-Stokes type equation.
virtual double val_imp(int i) const
Returns the imposed value on the i-th component of the field at the boundary at the default time of c...
Classe Echange_externe_impose: This class represents the special case of the class.
Classe Echange_global_impose This class represents the special case of the class.
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()
Default constructor.
Classe Neumann_paroi_adiabatique This boundary condition corresponds to an adiabatic wall in a.
Classe Neumann_paroi This boundary condition corresponds to an imposed flux for the.
Neumann_sortie_libre This class represents an open boundary without imposed velocity.
double val_ext(int i) const override
Returns the value of the i-th component of the field imposed on the exterior of the boundary.
class Periodique This class represents a periodic boundary condition.
Symetrie On symmetry faces, the following properties hold: