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>
61 inline double flux_face(
const DoubleTab&,
int,
const Symetrie&,
int)
const override {
return 0; }
68 inline void flux_face(
const DoubleTab&,
int,
const Symetrie&,
int, DoubleVect& flux)
const override { }
69 inline void flux_face(
const DoubleTab&,
int,
const Periodique&,
int, DoubleVect& flux)
const override;
79 inline void flux_faces_interne(
const DoubleTab&,
int, DoubleVect& flux)
const override;
121 inline void coeffs_face(
int,
int,
const Periodique&, DoubleVect& aii, DoubleVect& ajj)
const override;
143 inline double qcentre(
const double,
const int,
const int,
const int,
const int,
const int,
const DoubleTab&)
const;
144 inline void qcentre(
const double,
const int,
const int,
const int,
const int,
const int,
const DoubleTab&, ArrOfDouble&)
const;
150 int n0 =
elem_(face, 0);
151 int n1 =
elem_(face, 1);
154 double T_imp = la_cl.
val_imp(face - num1);
158 flux = psc * inco[n0];
167 flux = psc * inco[n1];
174 int i =
elem_(face, 0);
191 int i =
elem_(face, 0);
194 double T_imp = la_cl.
val_imp(face - num1);
210 int n0 =
elem_(face, 0);
211 int n1 =
elem_(face, 1);
217 flux = psc * inco[n0];
219 flux = psc * la_cl.
val_ext(face - num1);
224 flux = psc * la_cl.
val_ext(face - num1);
226 flux = psc * inco[n1];
233 int i =
elem_(face, 0);
250 int i =
elem_(face, 0);
255 flux = psc * la_cl.
val_ext(face - num1);
260 flux = psc * la_cl.
val_ext(face - num1);
271 int n0 =
elem_(face, 0);
272 int n1 =
elem_(face, 1);
277 flux =
qcentre(psc, n0, n1, n0_0, n1_1, face, inco);
285 int i =
elem_(face, 0);
286 int j =
elem_(face, 1);
293 aii = -
qcentre(psc, i, j, i0_0, j1_1, face, inconnue->valeurs());
295 ajj = -
qcentre(psc, i, j, i0_0, j1_1, face, inconnue->valeurs());
302 int n0 =
elem_(face, 0);
303 int n1 =
elem_(face, 1);
307 flux =
qcentre(psc, n0, n1, n0_0, n1_1, face, inco);
313 int i =
elem_(face, 0);
314 int j =
elem_(face, 1);
319 if ((i0_0 == -1) || (j1_1 == -1))
327 aii = -
qcentre(psc, i, j, i0_0, j1_1, face, inconnue->valeurs());
329 ajj = -
qcentre(psc, i, j, i0_0, j1_1, face, inconnue->valeurs());
335 int n0 =
elem_(face, 0);
336 int n1 =
elem_(face, 1);
342 for (k = 0; k < flux.
size(); k++)
343 flux(k) = -psc * inco(n0, k);
345 for (k = 0; k < flux.
size(); k++)
346 flux(k) = -psc * la_cl.
val_imp(face - num1, k);
351 for (k = 0; k < flux.
size(); k++)
352 flux(k) = -psc * la_cl.
val_imp(face - num1, k);
354 for (k = 0; k < flux.
size(); k++)
355 flux(k) = -psc * inco(n1, k);
362 int i =
elem_(face, 0);
367 for (k = 0; k < aii.
size(); k++)
373 for (k = 0; k < ajj.
size(); k++)
381 int i =
elem_(face, 0);
386 for (k = 0; k < flux.
size(); k++)
387 flux(k) = -psc * la_cl.
val_imp(face - num1);
392 for (k = 0; k < flux.
size(); k++)
393 flux(k) = -psc * la_cl.
val_imp(face - num1);
400 int n0 =
elem_(face, 0);
401 int n1 =
elem_(face, 1);
406 for (k = 0; k < flux.
size(); k++)
407 flux(k) = -psc * inco(n0, k);
409 for (k = 0; k < flux.
size(); k++)
410 flux(k) = -psc * la_cl.
val_ext(face - num1, k);
415 for (k = 0; k < flux.
size(); k++)
416 flux(k) = -psc * la_cl.
val_ext(face - num1, k);
418 for (k = 0; k < flux.
size(); k++)
419 flux(k) = -psc * inco(n1, k);
426 int i =
elem_(face, 0);
431 for (k = 0; k < aii.
size(); k++)
437 for (k = 0; k < ajj.
size(); k++)
445 int i =
elem_(face, 0);
450 for (k = 0; k < flux.
size(); k++)
451 flux(k) = -psc * la_cl.
val_ext(face - num1);
456 for (k = 0; k < flux.
size(); k++)
457 flux(k) = -psc * la_cl.
val_ext(face - num1);
465 int n0 =
elem_(face, 0);
466 int n1 =
elem_(face, 1);
471 qcentre(psc, n0, n1, n0_0, n1_1, face, inco, flux);
472 for (k = 0; k < flux.
size(); k++)
479 int i =
elem_(face, 0);
480 int j =
elem_(face, 1);
484 ArrOfDouble flux(aii.
size());
487 qcentre(psc, i, j, i0_0, j1_1, face, inconnue->valeurs(), flux);
489 for (k = 0; k < aii.
size(); k++)
492 for (k = 0; k < ajj.
size(); k++)
500 int n0 =
elem_(face, 0);
501 int n1 =
elem_(face, 1);
505 qcentre(psc, n0, n1, n0_0, n1_1, face, inco, flux);
506 for (k = 0; k < flux.
size(); k++)
513 int i =
elem_(face, 0);
514 int j =
elem_(face, 1);
518 ArrOfDouble flux(aii.
size());
520 qcentre(psc, i, j, i0_0, j1_1, face, inconnue->valeurs(), flux);
522 for (k = 0; k < aii.
size(); k++)
525 for (k = 0; k < ajj.
size(); k++)
538 double T0 = transporte[num0];
539 double T1 = transporte[num1];
541 flux = 0.5 * (T0 + T1);
547 ArrOfDouble& flux)
const
553 ArrOfDouble T0(ncomp);
554 ArrOfDouble T0_0(ncomp);
555 ArrOfDouble T1(ncomp);
556 ArrOfDouble T1_1(ncomp);
558 for (k = 0; k < ncomp; k++)
560 T0[k] = transporte(num0, k);
561 T0_0[k] = transporte(num0_0, k);
562 T1[k] = transporte(num1, k);
563 T1_1[k] = transporte(num1_1, k);
566 for (k = 0; k < ncomp; k++)
567 flux[k] = 0.5 * (T0[k] + T1[k]) * psc;
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.
Eval_Conv_PolyMAC_CDO()
Default constructor.
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 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:
_SIZE_ size_array() const