TrioCFD 1.9.8
TrioCFD documentation
Loading...
Searching...
No Matches
Couplage_Tubes_IBC.h
1/****************************************************************************
2* Copyright (c) 2015 - 2016, 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#ifndef Couplage_Tubes_IBC_included
16#define Couplage_Tubes_IBC_included
17#include <Objet_U.h>
18#include <TRUSTTab.h>
19#include <IJK_Field.h>
20#include <Tube_base.h>
21
22#define MOUVEMENT_LIBRE 0
23#define MOUVEMENT_IMPOSE 1
24#define ETALEMENT 0
25#define PAS_ETALEMENT 1
26#define MIROIR 0
27#define PAS_MIROIR 1
28#define SYMETRIE_PLANE 2
29#define IBC0 0
30#define IBC_DIFFUSE 1
31#define IBC_LOCALISEE 2
32#define IBC_LOCALISEE_QDM 3
33#define CYLINDRE 0
34#define CUBE 1
35
36class EFichier;
37class SFichier;
38
40{
41 Declare_instanciable(Couplage_Tubes_IBC);
42public:
43 void initialize(const Domaine_IJK&);
44
45 void force_ibc(IJK_Field_double& vx, IJK_Field_double& vy, IJK_Field_double& vz,
46 const IJK_Field_double& rho_field,
47 double timestep, const IJK_Field_double& pressure, double current_time);
48 void calcul_force_post_projection(IJK_Field_double& vx, IJK_Field_double& vy, IJK_Field_double& vz,
49 const IJK_Field_double& rho_field,
50 double timestep, double current_time);
51 void champ_miroir(IJK_Field_double& vx, IJK_Field_double& vy, IJK_Field_double& vz,
52 const IJK_Field_double& rho_field,
53 double timestep, const IJK_Field_double& pressure);
54 void forcage_anticipe(IJK_Field_double& vx, IJK_Field_double& vy, IJK_Field_double& vz,
55 const IJK_Field_double& rho_field,
56 double timestep, const IJK_Field_double& pressure);
57 void force_ibc_velocity_anticipe_cube(IJK_Field_double& vx, IJK_Field_double& vy, IJK_Field_double& vz,
58 const IJK_Field_double& rho_field,
59 DoubleTab& masse_fluide_cylindres,
60 DoubleTab& volume_cylindres,
61 DoubleTab& integrale_force,
62 const Faisceau_Tubes& ,
63 const double timestep) const;
64
65 void force_ibc_velocity(IJK_Field_double& vx, IJK_Field_double& vy, IJK_Field_double& vz,
66 const IJK_Field_double& rho_field,
67 DoubleTab& masse_fluide_cylindres,
68 DoubleTab& volume_cylindres,
69 DoubleTab& integrale_force,
70 const Faisceau_Tubes& ) const;
71 void force_ibc_velocity_frac_vol(IJK_Field_double& vx, IJK_Field_double& vy, IJK_Field_double& vz,
72 const IJK_Field_double& rho_field,
73 DoubleTab& masse_fluide_cylindres,
74 DoubleTab& volume_cylindres,
75 DoubleTab& integrale_force,
76 const Faisceau_Tubes& ) const;
77 void ibc0_velocity_cube(IJK_Field_double& vx, IJK_Field_double& vy, IJK_Field_double& vz,
78 const IJK_Field_double& rho_field,
79 DoubleTab& masse_fluide_cylindres,
80 DoubleTab& volume_cylindres,
81 DoubleTab& integrale_force,
82 const Faisceau_Tubes& ) const;
83 void ibc_diffuse_velocity_cube(IJK_Field_double& vx, IJK_Field_double& vy, IJK_Field_double& vz,
84 const IJK_Field_double& rho_field,
85 DoubleTab& masse_fluide_cylindres,
86 DoubleTab& volume_cylindres,
87 DoubleTab& integrale_force,
88 const Faisceau_Tubes& ) const;
89 void ibc_localisee_velocity_cube(IJK_Field_double& vx, IJK_Field_double& vy, IJK_Field_double& vz,
90 const IJK_Field_double& rho_field,
91 DoubleTab& masse_fluide_cylindres,
92 DoubleTab& volume_cylindres,
93 DoubleTab& integrale_force,
94 const Faisceau_Tubes& , double current_time) const;
95 void ibc_localisee_velocity_cube_qdm(IJK_Field_double& vx, IJK_Field_double& vy, IJK_Field_double& vz,
96 const IJK_Field_double& rho_field,
97 DoubleTab& masse_fluide_cylindres,
98 DoubleTab& volume_cylindres,
99 DoubleTab& integrale_force,
100 const Faisceau_Tubes& , double current_time) const;
101 void force_ibc_velocity_miroir(IJK_Field_double& vx, IJK_Field_double& vy, IJK_Field_double& vz,
102 const IJK_Field_double& rho_field,
103 DoubleTab& masse_fluide_cylindres,
104 DoubleTab& volume_cylindres,
105 DoubleTab& integrale_force,
106 const Faisceau_Tubes& ) const;
107 void force_ibc_velocity_symetrie_plane(IJK_Field_double& vx, IJK_Field_double& vy, IJK_Field_double& vz,
108 const IJK_Field_double& rho_field,
109 DoubleTab& masse_fluide_cylindres,
110 DoubleTab& volume_cylindres,
111 DoubleTab& integrale_force,
112 const Faisceau_Tubes& ) const;
113 void calcul_F_pression(const IJK_Field_double& pressure, const IJK_Field_double& vx,
114 DoubleTab& integrale_force_pression, DoubleTab& pression_teta,
115 const Faisceau_Tubes& ) const;
116 void calcul_F_pression2(const IJK_Field_double& pressure, const IJK_Field_double& vx,
117 DoubleTab& integrale_force_pression, DoubleTab& pression_teta,
118 const Faisceau_Tubes& ) const;
119 void ibc0_force_cube(IJK_Field_double& vx, IJK_Field_double& vy, IJK_Field_double& vz,
120 const IJK_Field_double& rho_field,
121 DoubleTab& masse_fluide_cylindres,
122 DoubleTab& volume_cylindres,
123 DoubleTab& integrale_force,
124 const Faisceau_Tubes& ) const;
125 void ibc_diffuse_force_cube(IJK_Field_double& vx, IJK_Field_double& vy, IJK_Field_double& vz,
126 const IJK_Field_double& rho_field,
127 DoubleTab& masse_fluide_cylindres,
128 DoubleTab& volume_cylindres,
129 DoubleTab& integrale_force,
130 const Faisceau_Tubes& ) const;
131 void ibc_localisee_force_cube(IJK_Field_double& vx, IJK_Field_double& vy, IJK_Field_double& vz,
132 const IJK_Field_double& rho_field,
133 DoubleTab& masse_fluide_cylindres,
134 DoubleTab& volume_cylindres,
135 DoubleTab& integrale_force,
136 const Faisceau_Tubes& , double current_time) const;
137 void update(double current_time,
138 double timestep);
139
140 void reprendre_probleme(Entree& fichier);
141
144
145
146protected:
147 OBS_PTR(Domaine_IJK) ref_domaine_; // cette variable est initialisee dans la methode initialize()
148
151 int n_P_;
155 double L_cube_;
156
157 // force IBC : tableau a trois colonnes et N lignes contenant les forces selon x, y et z sur les N cylindres
161 DoubleTab pression_teta_;
168
171
172 // L'ensemble des tubes...
174};
175#endif
DoubleTab d_integrale_force_post_proj_
void force_ibc_velocity_miroir(IJK_Field_double &vx, IJK_Field_double &vy, IJK_Field_double &vz, const IJK_Field_double &rho_field, DoubleTab &masse_fluide_cylindres, DoubleTab &volume_cylindres, DoubleTab &integrale_force, const Faisceau_Tubes &) const
void ibc0_velocity_cube(IJK_Field_double &vx, IJK_Field_double &vy, IJK_Field_double &vz, const IJK_Field_double &rho_field, DoubleTab &masse_fluide_cylindres, DoubleTab &volume_cylindres, DoubleTab &integrale_force, const Faisceau_Tubes &) const
void force_ibc_velocity(IJK_Field_double &vx, IJK_Field_double &vy, IJK_Field_double &vz, const IJK_Field_double &rho_field, DoubleTab &masse_fluide_cylindres, DoubleTab &volume_cylindres, DoubleTab &integrale_force, const Faisceau_Tubes &) const
DoubleTab integrale_force_pression_
void reprendre_probleme(Entree &fichier)
void update(double current_time, double timestep)
void ibc_localisee_velocity_cube_qdm(IJK_Field_double &vx, IJK_Field_double &vy, IJK_Field_double &vz, const IJK_Field_double &rho_field, DoubleTab &masse_fluide_cylindres, DoubleTab &volume_cylindres, DoubleTab &integrale_force, const Faisceau_Tubes &, double current_time) const
void sauvegarder_probleme(SFichier &f)
DoubleTab integrale_force_N_moins_1_post_proj_
void calcul_F_pression2(const IJK_Field_double &pressure, const IJK_Field_double &vx, DoubleTab &integrale_force_pression, DoubleTab &pression_teta, const Faisceau_Tubes &) const
void ibc_localisee_force_cube(IJK_Field_double &vx, IJK_Field_double &vy, IJK_Field_double &vz, const IJK_Field_double &rho_field, DoubleTab &masse_fluide_cylindres, DoubleTab &volume_cylindres, DoubleTab &integrale_force, const Faisceau_Tubes &, double current_time) const
void ibc0_force_cube(IJK_Field_double &vx, IJK_Field_double &vy, IJK_Field_double &vz, const IJK_Field_double &rho_field, DoubleTab &masse_fluide_cylindres, DoubleTab &volume_cylindres, DoubleTab &integrale_force, const Faisceau_Tubes &) const
DoubleTab integrale_force_post_proj_
void initialize(const Domaine_IJK &)
void force_ibc_velocity_symetrie_plane(IJK_Field_double &vx, IJK_Field_double &vy, IJK_Field_double &vz, const IJK_Field_double &rho_field, DoubleTab &masse_fluide_cylindres, DoubleTab &volume_cylindres, DoubleTab &integrale_force, const Faisceau_Tubes &) const
fonction_ibc pour faire le champ miroir
void force_ibc_velocity_anticipe_cube(IJK_Field_double &vx, IJK_Field_double &vy, IJK_Field_double &vz, const IJK_Field_double &rho_field, DoubleTab &masse_fluide_cylindres, DoubleTab &volume_cylindres, DoubleTab &integrale_force, const Faisceau_Tubes &, const double timestep) const
forcage anticpe dans le cas du cube
DoubleTab integrale_force_N_moins_1_
void sauvegarder_pression(SFichier &f)
void force_ibc(IJK_Field_double &vx, IJK_Field_double &vy, IJK_Field_double &vz, const IJK_Field_double &rho_field, double timestep, const IJK_Field_double &pressure, double current_time)
void ibc_localisee_velocity_cube(IJK_Field_double &vx, IJK_Field_double &vy, IJK_Field_double &vz, const IJK_Field_double &rho_field, DoubleTab &masse_fluide_cylindres, DoubleTab &volume_cylindres, DoubleTab &integrale_force, const Faisceau_Tubes &, double current_time) const
void force_ibc_velocity_frac_vol(IJK_Field_double &vx, IJK_Field_double &vy, IJK_Field_double &vz, const IJK_Field_double &rho_field, DoubleTab &masse_fluide_cylindres, DoubleTab &volume_cylindres, DoubleTab &integrale_force, const Faisceau_Tubes &) const
OBS_PTR(Domaine_IJK) ref_domaine_
void ibc_diffuse_velocity_cube(IJK_Field_double &vx, IJK_Field_double &vy, IJK_Field_double &vz, const IJK_Field_double &rho_field, DoubleTab &masse_fluide_cylindres, DoubleTab &volume_cylindres, DoubleTab &integrale_force, const Faisceau_Tubes &) const
void calcul_force_post_projection(IJK_Field_double &vx, IJK_Field_double &vy, IJK_Field_double &vz, const IJK_Field_double &rho_field, double timestep, double current_time)
Calcul force ibc post projection.
void champ_miroir(IJK_Field_double &vx, IJK_Field_double &vy, IJK_Field_double &vz, const IJK_Field_double &rho_field, double timestep, const IJK_Field_double &pressure)
void ibc_diffuse_force_cube(IJK_Field_double &vx, IJK_Field_double &vy, IJK_Field_double &vz, const IJK_Field_double &rho_field, DoubleTab &masse_fluide_cylindres, DoubleTab &volume_cylindres, DoubleTab &integrale_force, const Faisceau_Tubes &) const
void calcul_F_pression(const IJK_Field_double &pressure, const IJK_Field_double &vx, DoubleTab &integrale_force_pression, DoubleTab &pression_teta, const Faisceau_Tubes &) const
void forcage_anticipe(IJK_Field_double &vx, IJK_Field_double &vy, IJK_Field_double &vz, const IJK_Field_double &rho_field, double timestep, const IJK_Field_double &pressure)
This class encapsulates all the information related to the eulerian mesh for TrioIJK.
Definition Domaine_IJK.h:47
Fichier en lecture Cette classe est a la classe C++ ifstream ce que la classe Entree est a la.
Definition EFichier.h:29
friend class Entree
Definition Objet_U.h:76
Objet_U()
Constructeur par defaut : attribue un numero d'identifiant unique a l'objet (object_id_),...
Definition Objet_U.cpp:55
Cette classe est a la classe C++ ofstream ce que la classe Sortie est a la classe C++ ostream Elle re...
Definition SFichier.h:27