TrioCFD 1.9.8
TrioCFD documentation
Loading...
Searching...
No Matches
Corrige_flux_FT_temperature_conv.h
1/****************************************************************************
2* Copyright (c) 2023, 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 Corrige_flux_FT_temperature_conv_included
17#define Corrige_flux_FT_temperature_conv_included
18
19#include <Corrige_flux_FT_base.h>
20
21/////////////////////////////////////////////////////////////////////////////
22//
23// .DESCRIPTION : class Corrige_flux_FT_temperature_conv
24//
25// <Description of class Corrige_flux_FT_temperature_conv>
26//
27/////////////////////////////////////////////////////////////////////////////
28
30{
31
32 Declare_instanciable( Corrige_flux_FT_temperature_conv ) ;
33
34public:
35
36 void initialize(const Domaine_IJK& splitting,
37 const IJK_Field_double& field,
38 const IJK_Interfaces& interfaces,
39 const Probleme_FTD_IJK_base& ijk_ft,
40 Intersection_Interface_ijk_face& intersection_ijk_face,
41 Intersection_Interface_ijk_cell& intersection_ijk_cell) override;
42
43 void corrige_flux_faceIJ(IJK_Field_local_double *const flux,
44 const int k_layer, const int dir) override;
45
46 void update() override;
47
48 /* Cette méthode calcule la temperature et le flux a l'interface aux points
49 * donnes en entree. Dans le cas classique elle est utilisee aux points qui
50 * sont les projections des centres de gravites des faces mouillees coupees
51 * par l'interface. Elle est aussi utilisee sur tous les centres de facette
52 * pour les post traitement de ces valeurs.
53 */
55 const IJK_Field_double& temperature, const double ldal, const double ldav,
56 const double dist, const DoubleTab& positions, const DoubleTab& normale,
57 ArrOfDouble& temperature_interp, ArrOfDouble& flux_normal_interp,
58 ArrOfDouble& temp_liqu, ArrOfDouble& temp_vap, DoubleTab& coo_liqu,
59 DoubleTab& coo_vap) const override;
60
61protected:
62 /* Calcule effectivement sur les points a l'interface les valeurs de temp et
63 * flux. Met a jour les tableaux temp_interface_ et q_interface_.
64 */
65 void calcul_temp_flux_interf_pour_bary_face(ArrOfDouble& temp_vap, ArrOfDouble& temp_liqu);
66
67 /* Calcule effectivement sur les points a l'interface les valeurs de temp et
68 * flux. Met a jour les tableaux temp_interface_ et q_interface_.
69 */
70 void calcul_temp_flux_interf_pour_bary_cell(ArrOfDouble& temp_vap, ArrOfDouble& temp_liqu);
71
72 /* Ici on suppose que les methodes d interpolation de la temperature ont deja
73 * ete executees a ce pas de temps et on interpole dans l autre sens pour
74 * recuperer la valeur aux barycentres des faces. Dans cette methode pas
75 * besoin de faire comme pour la premiere partie qui sert aussi au post
76 * traitement. Ici on ne s'en sert strictement que dans l'operateur.
77 * void interp_back_to_bary_faces(const ArrOfDouble& temp_vap, const ArrOfDouble& temp_liqu);
78 */
79 void interp_back_to_bary_faces(const ArrOfDouble& temp_vap, const ArrOfDouble& temp_liqu);
80
81 // Méthode qui met à jour temperature_ghost_.
82 void update_temperature_ghost(const ArrOfDouble& temp_vap, const ArrOfDouble& temp_liqu);
83
84 /* Comme ca on ne peut plus utiliser par erreur l'init de la classe abstraite
85 * en cas de polymorphisme.
86 */
87// using Corrige_flux_FT::initialize;
88
89 /* On fait référence au champ thermique pour accéder surtout aux valeurs des
90 * propriétés thermiques.
91 * TODO: Il faudrait créer un OBS_PTR(IJK_Energie)
92 */
95
96
97 // FIXME: Move Intersection_Interface_ijk_face to IJK_Interfaces
98 /* C'est un peu bizarre de le mettre ici, mais c'est probablement le plus
99 * simple. Cet objet calcul / stocke les coo de projection entre les barys des
100 * faces mouillées et l'interface.
101 */
102 // Intersection_Interface_ijk_face intersection_ijk_face_;
103
104 /* Les tableaux pour stocker les valeurs aux points de part et d'autre de
105 * l'interface.
106 * ArrOfDouble temp_vap1_, temp_liqu1_;
107 * On prepare des tableaux pour les coordonnees des points d'interpolation et
108 * des valeurs. Ces valeurs sont stockées pour éventuel post-traitement.
109 */
111 ArrOfDouble q_interface_face_;
112
114 ArrOfDouble q_interface_cell_;
115 /* Ce tableau est de taille (n_diph, 2)
116 * La premiere compo donne la température de la phase liquide et la deuxième
117 * celle de la phase vapeur.
118 */
120
121 // FIXME: Move Intersection_Interface_ijk_cell to IJK_Interfaces
122 /* Cet objet calcul / stocke les coo de projection des centres des
123 * cellules diphasique sur l'interface.
124 */
125 // Intersection_Interface_ijk_cell intersection_ijk_cell_;
126 /* Dans ce tableau on stocke les température liquid et vapeur ghost des cell
127 * diph.
128 */
130
132 const double frac_liquide,
133 IJK_Field_local_double * const flux
134 ) const;
135
137 const double frac_liquide,
138 const double s_face,
139 IJK_Field_local_double * const flux
140 ) const ;
142 const double frac_liquide,
143 const double s_face,
144 IJK_Field_local_double * const flux) const ;
145 double quick(
146 const double Tim1,
147 const double Ti,
148 const double Tip1,
149 const double Tip2,
150 const double velocity) const ;
151 const double& get_ghost_temp_if_cell_is_diph(
152 const FixedVector<int, 3>& elem,
153 const bool from_liqu_phase) const ;
155 const double frac_liquide, const double decal) const ;
157 const double frac_liquide,
158 const double decal) const ;
159 bool is_flux_upwind_from_interface(const double decal) const ;
160};
161
162#endif /* Corrige_flux_FT_included */
: class Corrige_flux_FT API pour modifier un champ de flux à partir de donnees à l'interface....
const double & get_ghost_temp_if_cell_is_diph(const FixedVector< int, 3 > &elem, const bool from_liqu_phase) const
void corrige_flux_faceIJ(IJK_Field_local_double *const flux, const int k_layer, const int dir) override
double interpolation_quick_avec_1_ghost(const double frac_liquide, const double decal) const
void update_temperature_ghost(const ArrOfDouble &temp_vap, const ArrOfDouble &temp_liqu)
double quick(const double Tim1, const double Ti, const double Tip1, const double Tip2, const double velocity) const
void calcul_temp_flux_interf_pour_bary_face(ArrOfDouble &temp_vap, ArrOfDouble &temp_liqu)
void multiplie_par_rho_cp_de_la_face_monophasique(const double frac_liquide, IJK_Field_local_double *const flux) const
double extrapolation_amont_1_depuis_l_interface(const double frac_liquide, const double decal) const
void interp_back_to_bary_faces(const ArrOfDouble &temp_vap, const ArrOfDouble &temp_liqu)
void calcul_temperature_flux_interface(const IJK_Field_double &temperature, const double ldal, const double ldav, const double dist, const DoubleTab &positions, const DoubleTab &normale, ArrOfDouble &temperature_interp, ArrOfDouble &flux_normal_interp, ArrOfDouble &temp_liqu, ArrOfDouble &temp_vap, DoubleTab &coo_liqu, DoubleTab &coo_vap) const override
bool is_flux_upwind_from_interface(const double decal) const
void calcul_temp_flux_interf_pour_bary_cell(ArrOfDouble &temp_vap, ArrOfDouble &temp_liqu)
void initialize(const Domaine_IJK &splitting, const IJK_Field_double &field, const IJK_Interfaces &interfaces, const Probleme_FTD_IJK_base &ijk_ft, Intersection_Interface_ijk_face &intersection_ijk_face, Intersection_Interface_ijk_cell &intersection_ijk_cell) override
void remplace_flux_par_somme_rhocpf_Tf_v_Sf(const double frac_liquide, const double s_face, IJK_Field_local_double *const flux) const
void remplace_flux_par_quick_ghost_amont_1(const double frac_liquide, const double s_face, IJK_Field_local_double *const flux) const
This class encapsulates all the information related to the eulerian mesh for TrioIJK.
Definition Domaine_IJK.h:47
: class IJK_Interfaces
: class IJK_MonofluidVar