TRUST 1.9.8
HPC thermohydraulic platform
Loading...
Searching...
No Matches
Eval_PolyMAC_CDO_Elem.h
1/****************************************************************************
2* Copyright (c) 2024, CEA
3* All rights reserved.
4*
5* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
6* 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
7* 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
8* 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
9*
10* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
11* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
12* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
13*
14*****************************************************************************/
15
16#ifndef Eval_PolyMAC_CDO_Elem_included
17#define Eval_PolyMAC_CDO_Elem_included
18
19#include <TRUST_Ref.h>
20#include <Periodique.h>
21#include <Dirichlet_paroi_fixe.h>
22#include <Dirichlet_paroi_defilante.h>
23#include <Dirichlet_entree_fluide_leaves.h>
24#include <Neumann_paroi.h>
25#include <Neumann_paroi_adiabatique.h>
26#include <Symetrie.h>
27#include <Echange_global_impose.h>
28#include <Echange_externe_impose.h>
29#include <Neumann_sortie_libre.h>
30
31class Champ_base;
32
33// Cette classe represente le prototype fonctionnel
34// des evaluateurs de flux associes aux equations de
35// conservation integrees sur les elements
37{
38public:
40 inline virtual ~Eval_PolyMAC_CDO_Elem() { }
41 void associer_inconnue(const Champ_base&);
42
43 virtual int calculer_flux_faces_symetrie() const =0;
44 virtual int calculer_flux_faces_sortie_libre() const =0;
45 virtual int calculer_flux_faces_entree_fluide() const =0;
46 virtual int calculer_flux_faces_paroi_fixe() const =0;
49 virtual int calculer_flux_faces_paroi() const =0;
52 virtual int calculer_flux_faces_periodique() const =0;
53
54 virtual double flux_face(const DoubleTab&, int, const Symetrie&, int) const =0;
55 virtual double flux_face(const DoubleTab&, int, const Neumann_sortie_libre&, int) const =0;
56 virtual double flux_face(const DoubleTab&, int, const Dirichlet_entree_fluide&, int) const =0;
57 virtual double flux_face(const DoubleTab&, int, const Dirichlet_paroi_fixe&, int) const =0;
58 virtual double flux_face(const DoubleTab&, int, const Dirichlet_paroi_defilante&, int) const =0;
59 virtual double flux_face(const DoubleTab&, int, const Neumann_paroi_adiabatique&, int) const =0;
60 virtual double flux_face(const DoubleTab&, int, const Neumann_paroi&, int) const =0;
61 virtual double flux_face(const DoubleTab&, int, int, int, const Echange_externe_impose&, int) const =0;
62 virtual double flux_face(const DoubleTab&, int, const Echange_global_impose&, int) const =0;
63 virtual double flux_face(const DoubleTab&, int, const Periodique&, int) const =0;
64
65 virtual inline double flux_faces_interne(const DoubleTab&, int) const =0;
66
67 virtual void flux_face(const DoubleTab&, int, const Symetrie&, int, DoubleVect& flux) const =0;
68 virtual void flux_face(const DoubleTab&, int, const Neumann_sortie_libre&, int, DoubleVect& flux) const =0;
69 virtual void flux_face(const DoubleTab&, int, const Dirichlet_entree_fluide&, int, DoubleVect& flux) const =0;
70 virtual void flux_face(const DoubleTab&, int, const Dirichlet_paroi_fixe&, int, DoubleVect& flux) const =0;
71 virtual void flux_face(const DoubleTab&, int, const Dirichlet_paroi_defilante&, int, DoubleVect& flux) const =0;
72 virtual void flux_face(const DoubleTab&, int, const Neumann_paroi_adiabatique&, int, DoubleVect& flux) const =0;
73 virtual void flux_face(const DoubleTab&, int, const Neumann_paroi&, int, DoubleVect& flux) const =0;
74 virtual void flux_face(const DoubleTab&, int, int, int, const Echange_externe_impose&, int, DoubleVect& flux) const =0;
75 virtual void flux_face(const DoubleTab&, int, const Echange_global_impose&, int, DoubleVect& flux) const =0;
76 virtual void flux_face(const DoubleTab&, int, const Periodique&, int, DoubleVect& flux) const =0;
77
78 virtual inline void flux_faces_interne(const DoubleTab&, int, DoubleVect& flux) const =0;
79
80
81 virtual void coeffs_face(int, int, const Symetrie&, double& aii, double& ajj) const { }
82 virtual void coeffs_face(int, int, const Neumann_sortie_libre&, double& aii, double& ajj) const { }
83 virtual void coeffs_face(int, int, const Dirichlet_entree_fluide&, double& aii, double& ajj) const { }
84 virtual void coeffs_face(int, int, const Dirichlet_paroi_fixe&, double& aii, double& ajj) const { }
85 virtual void coeffs_face(int, int, const Dirichlet_paroi_defilante&, double& aii, double& ajj) const { }
86 virtual void coeffs_face(int, int, const Neumann_paroi_adiabatique&, double& aii, double& ajj) const { }
87 virtual void coeffs_face(int, int, const Neumann_paroi&, double& aii, double& ajj) const { }
88 virtual void coeffs_face(int, int, int, int, const Echange_externe_impose&, double& aii, double& ajj) const { }
89 virtual void coeffs_face(int, int, const Echange_global_impose&, double& aii, double& ajj) const { }
90 virtual void coeffs_face(int, int, const Periodique&, double& aii, double& ajj) const { }
91
92 virtual double coeffs_face_bloc_vitesse(const DoubleTab&, int, const Dirichlet_entree_fluide&, int) const { return 0.; }
93 virtual double coeffs_face_bloc_vitesse(const DoubleTab&, int, const Dirichlet_paroi_defilante&, int) const { return 0.; }
94 virtual double coeffs_face_bloc_vitesse(const DoubleTab&, int, const Dirichlet_paroi_fixe&, int) const { return 0.; }
95 virtual double coeffs_face_bloc_vitesse(const DoubleTab&, int, int, int, const Echange_externe_impose&, int) const { return 0.; }
96 virtual double coeffs_face_bloc_vitesse(const DoubleTab&, int, const Echange_global_impose&, int) const { return 0.; }
97 virtual double coeffs_face_bloc_vitesse(const DoubleTab&, int, const Neumann_paroi&, int) const { return 0.; }
98 virtual double coeffs_face_bloc_vitesse(const DoubleTab&, int, const Neumann_paroi_adiabatique&, int) const { return 0.; }
99 virtual double coeffs_face_bloc_vitesse(const DoubleTab&, int, const Neumann_sortie_libre&, int) const { return 0.; }
100 virtual double coeffs_face_bloc_vitesse(const DoubleTab&, int, const Symetrie&, int) const { return 0.; }
101 virtual double coeffs_face_bloc_vitesse(const DoubleTab&, int, const Periodique&, int) const { return 0.; }
102 virtual double coeffs_faces_interne_bloc_vitesse(const DoubleTab&, int) const { return 0.; }
103
104 virtual void coeffs_faces_interne(int, double& aii, double& ajj) const { }
105
106 virtual double secmem_face(int, const Symetrie&, int) const { return 0; }
107 virtual double secmem_face(int, const Neumann_sortie_libre&, int) const { return 0; }
108 virtual double secmem_face(int, const Dirichlet_entree_fluide&, int) const { return 0; }
109 virtual double secmem_face(int, const Dirichlet_paroi_fixe&, int) const { return 0; }
110 virtual double secmem_face(int, const Dirichlet_paroi_defilante&, int) const { return 0; }
111 virtual double secmem_face(int, const Neumann_paroi_adiabatique&, int) const { return 0; }
112 virtual double secmem_face(int, const Neumann_paroi&, int) const { return 0; }
113 virtual double secmem_face(int, int, int, const Echange_externe_impose&, int) const { return 0; }
114 virtual double secmem_face(int, const Echange_global_impose&, int) const { return 0; }
115 virtual double secmem_face(int, const Periodique&, int) const { return 0; }
116 virtual double secmem_faces_interne(int) const { return 0; }
117
118
119 virtual void coeffs_face(int, int, const Symetrie&, DoubleVect& aii, DoubleVect& ajj) const { }
120 virtual void coeffs_face(int, int, const Neumann_sortie_libre&, DoubleVect& aii, DoubleVect& ajj) const { }
121 virtual void coeffs_face(int, int, const Dirichlet_entree_fluide&, DoubleVect& aii, DoubleVect& ajj) const { }
122 virtual void coeffs_face(int, int, const Dirichlet_paroi_fixe&, DoubleVect& aii, DoubleVect& ajj) const { }
123 virtual void coeffs_face(int, int, const Dirichlet_paroi_defilante&, DoubleVect& aii, DoubleVect& ajj) const { }
124 virtual void coeffs_face(int, int, const Neumann_paroi_adiabatique&, DoubleVect& aii, DoubleVect& ajj) const { }
125 virtual void coeffs_face(int, int, const Neumann_paroi&, DoubleVect& aii, DoubleVect& ajj) const { }
126 virtual void coeffs_face(int, int, int, int, const Echange_externe_impose&, DoubleVect& aii, DoubleVect& ajj) const { }
127 virtual void coeffs_face(int, int, const Echange_global_impose&, DoubleVect& aii, DoubleVect& ajj) const { }
128 virtual void coeffs_face(int, int, const Periodique&, DoubleVect& aii, DoubleVect& ajj) const { }
129 virtual void coeffs_faces_interne(int, DoubleVect& aii, DoubleVect& ajj) const { }
130
131 virtual void secmem_face(int, const Symetrie&, int, DoubleVect&) const { }
132 virtual void secmem_face(int, const Neumann_sortie_libre&, int, DoubleVect&) const { }
133 virtual void secmem_face(int, const Dirichlet_entree_fluide&, int, DoubleVect&) const { }
134 virtual void secmem_face(int, const Dirichlet_paroi_fixe&, int, DoubleVect&) const { }
135 virtual void secmem_face(int, const Dirichlet_paroi_defilante&, int, DoubleVect&) const { }
136 virtual void secmem_face(int, const Neumann_paroi_adiabatique&, int, DoubleVect&) const { }
137 virtual void secmem_face(int, const Neumann_paroi&, int, DoubleVect&) const { }
138 virtual void secmem_face(int, int, int, const Echange_externe_impose&, int, DoubleVect&) const { }
139 virtual void secmem_face(int, const Echange_global_impose&, int, DoubleVect&) const { }
140 virtual void secmem_faces_interne(int, DoubleVect&) const { }
141 virtual void secmem_face(int, const Periodique&, int, DoubleVect&) const { }
142
143protected:
145};
146
147#endif
classe Champ_base Cette classe est la base de la hierarchie des champs.
Definition Champ_base.h:43
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.
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.
virtual void coeffs_face(int, int, const Echange_global_impose &, double &aii, double &ajj) const
virtual int calculer_flux_faces_echange_global_impose() const =0
virtual double secmem_face(int, const Dirichlet_paroi_fixe &, int) const
virtual double flux_face(const DoubleTab &, int, const Neumann_paroi &, int) const =0
virtual void coeffs_face(int, int, int, int, const Echange_externe_impose &, DoubleVect &aii, DoubleVect &ajj) const
virtual void flux_face(const DoubleTab &, int, const Symetrie &, int, DoubleVect &flux) const =0
virtual double flux_face(const DoubleTab &, int, const Echange_global_impose &, int) const =0
virtual void flux_face(const DoubleTab &, int, const Dirichlet_paroi_fixe &, int, DoubleVect &flux) const =0
virtual void coeffs_face(int, int, const Periodique &, DoubleVect &aii, DoubleVect &ajj) const
virtual void flux_face(const DoubleTab &, int, const Periodique &, int, DoubleVect &flux) const =0
virtual double coeffs_face_bloc_vitesse(const DoubleTab &, int, const Dirichlet_paroi_defilante &, int) const
virtual void secmem_face(int, int, int, const Echange_externe_impose &, int, DoubleVect &) const
virtual double secmem_face(int, const Periodique &, int) const
virtual void flux_face(const DoubleTab &, int, const Neumann_sortie_libre &, int, DoubleVect &flux) const =0
virtual double secmem_face(int, const Echange_global_impose &, int) const
virtual void flux_face(const DoubleTab &, int, const Dirichlet_entree_fluide &, int, DoubleVect &flux) const =0
virtual double coeffs_faces_interne_bloc_vitesse(const DoubleTab &, int) const
virtual void coeffs_face(int, int, const Dirichlet_entree_fluide &, DoubleVect &aii, DoubleVect &ajj) const
virtual double flux_face(const DoubleTab &, int, const Dirichlet_entree_fluide &, int) const =0
virtual void coeffs_face(int, int, const Dirichlet_paroi_defilante &, DoubleVect &aii, DoubleVect &ajj) const
virtual double secmem_face(int, const Symetrie &, int) const
virtual double coeffs_face_bloc_vitesse(const DoubleTab &, int, const Neumann_sortie_libre &, int) const
virtual void flux_face(const DoubleTab &, int, const Dirichlet_paroi_defilante &, int, DoubleVect &flux) const =0
virtual void secmem_face(int, const Dirichlet_paroi_defilante &, int, DoubleVect &) const
virtual double coeffs_face_bloc_vitesse(const DoubleTab &, int, const Dirichlet_entree_fluide &, int) const
virtual double coeffs_face_bloc_vitesse(const DoubleTab &, int, const Symetrie &, int) const
virtual void coeffs_faces_interne(int, double &aii, double &ajj) const
virtual void secmem_faces_interne(int, DoubleVect &) const
virtual double secmem_face(int, const Dirichlet_paroi_defilante &, int) const
virtual void coeffs_face(int, int, const Symetrie &, double &aii, double &ajj) const
virtual double secmem_face(int, int, int, const Echange_externe_impose &, int) const
virtual void coeffs_faces_interne(int, DoubleVect &aii, DoubleVect &ajj) const
virtual void coeffs_face(int, int, const Neumann_sortie_libre &, DoubleVect &aii, DoubleVect &ajj) const
virtual double flux_face(const DoubleTab &, int, const Symetrie &, int) const =0
virtual double coeffs_face_bloc_vitesse(const DoubleTab &, int, const Echange_global_impose &, int) const
virtual double flux_face(const DoubleTab &, int, const Dirichlet_paroi_defilante &, int) const =0
virtual double coeffs_face_bloc_vitesse(const DoubleTab &, int, const Neumann_paroi &, int) const
OBS_PTR(Champ_base) inconnue
virtual double secmem_face(int, const Dirichlet_entree_fluide &, int) const
virtual int calculer_flux_faces_sortie_libre() const =0
virtual void secmem_face(int, const Periodique &, int, DoubleVect &) const
virtual void flux_face(const DoubleTab &, int, int, int, const Echange_externe_impose &, int, DoubleVect &flux) const =0
virtual double secmem_faces_interne(int) const
virtual double coeffs_face_bloc_vitesse(const DoubleTab &, int, const Periodique &, int) const
virtual void coeffs_face(int, int, const Periodique &, double &aii, double &ajj) const
virtual double flux_face(const DoubleTab &, int, int, int, const Echange_externe_impose &, int) const =0
virtual void secmem_face(int, const Symetrie &, int, DoubleVect &) const
virtual int calculer_flux_faces_entree_fluide() const =0
virtual int calculer_flux_faces_paroi_fixe() const =0
virtual double coeffs_face_bloc_vitesse(const DoubleTab &, int, const Neumann_paroi_adiabatique &, int) const
virtual void coeffs_face(int, int, const Dirichlet_entree_fluide &, double &aii, double &ajj) const
virtual void coeffs_face(int, int, const Dirichlet_paroi_defilante &, double &aii, double &ajj) const
virtual void flux_faces_interne(const DoubleTab &, int, DoubleVect &flux) const =0
virtual void secmem_face(int, const Neumann_paroi &, int, DoubleVect &) const
virtual void coeffs_face(int, int, const Neumann_paroi &, double &aii, double &ajj) const
virtual void flux_face(const DoubleTab &, int, const Neumann_paroi_adiabatique &, int, DoubleVect &flux) const =0
virtual double flux_face(const DoubleTab &, int, const Periodique &, int) const =0
virtual void coeffs_face(int, int, const Neumann_paroi &, DoubleVect &aii, DoubleVect &ajj) const
virtual void coeffs_face(int, int, const Echange_global_impose &, DoubleVect &aii, DoubleVect &ajj) const
virtual int calculer_flux_faces_paroi_adiabatique() const =0
virtual void secmem_face(int, const Dirichlet_paroi_fixe &, int, DoubleVect &) const
virtual int calculer_flux_faces_echange_externe_impose() const =0
virtual void secmem_face(int, const Echange_global_impose &, int, DoubleVect &) const
virtual double flux_face(const DoubleTab &, int, const Neumann_sortie_libre &, int) const =0
virtual double coeffs_face_bloc_vitesse(const DoubleTab &, int, int, int, const Echange_externe_impose &, int) const
virtual int calculer_flux_faces_periodique() const =0
virtual double flux_faces_interne(const DoubleTab &, int) const =0
virtual double secmem_face(int, const Neumann_paroi_adiabatique &, int) const
virtual void coeffs_face(int, int, const Symetrie &, DoubleVect &aii, DoubleVect &ajj) const
virtual void secmem_face(int, const Neumann_sortie_libre &, int, DoubleVect &) const
virtual void coeffs_face(int, int, const Dirichlet_paroi_fixe &, DoubleVect &aii, DoubleVect &ajj) const
virtual double coeffs_face_bloc_vitesse(const DoubleTab &, int, const Dirichlet_paroi_fixe &, int) const
virtual int calculer_flux_faces_paroi_defilante() const =0
virtual void coeffs_face(int, int, const Neumann_paroi_adiabatique &, double &aii, double &ajj) const
virtual void coeffs_face(int, int, const Neumann_paroi_adiabatique &, DoubleVect &aii, DoubleVect &ajj) const
virtual double flux_face(const DoubleTab &, int, const Neumann_paroi_adiabatique &, int) const =0
virtual void coeffs_face(int, int, const Neumann_sortie_libre &, double &aii, double &ajj) const
virtual void secmem_face(int, const Dirichlet_entree_fluide &, int, DoubleVect &) const
virtual void coeffs_face(int, int, int, int, const Echange_externe_impose &, double &aii, double &ajj) const
virtual double flux_face(const DoubleTab &, int, const Dirichlet_paroi_fixe &, int) const =0
virtual double secmem_face(int, const Neumann_sortie_libre &, int) const
virtual void secmem_face(int, const Neumann_paroi_adiabatique &, int, DoubleVect &) const
virtual void flux_face(const DoubleTab &, int, const Neumann_paroi &, int, DoubleVect &flux) const =0
virtual int calculer_flux_faces_paroi() const =0
virtual void flux_face(const DoubleTab &, int, const Echange_global_impose &, int, DoubleVect &flux) const =0
virtual int calculer_flux_faces_symetrie() const =0
virtual double secmem_face(int, const Neumann_paroi &, int) const
virtual void coeffs_face(int, int, const Dirichlet_paroi_fixe &, double &aii, double &ajj) const
void associer_inconnue(const Champ_base &)
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
classe Periodique Cette classe represente une condition aux limites periodique.
Definition Periodique.h:31
classe Symetrie Sur les faces de symetrie on a les proprietes suivantes:
Definition Symetrie.h:37