Code_Saturne
CFD tool
ecs_table_def.h
Go to the documentation of this file.
1 #ifndef _ECS_CHAMP_DEF_H_
2 #define _ECS_CHAMP_DEF_H_
3 
4 /*============================================================================
5  * Prototypes des fonctions
6  * associees a la structure `ecs_table_t' decrivant un table
7  * et propres aux tables principaux de type "definition"
8  *============================================================================*/
9 
10 /*
11  This file is part of Code_Saturne, a general-purpose CFD tool.
12 
13  Copyright (C) 1998-2012 EDF S.A.
14 
15  This program is free software; you can redistribute it and/or modify it under
16  the terms of the GNU General Public License as published by the Free Software
17  Foundation; either version 2 of the License, or (at your option) any later
18  version.
19 
20  This program is distributed in the hope that it will be useful, but WITHOUT
21  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
22  FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
23  details.
24 
25  You should have received a copy of the GNU General Public License along with
26  this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
27  Street, Fifth Floor, Boston, MA 02110-1301, USA.
28 */
29 
30 /*----------------------------------------------------------------------------*/
31 
32 /*============================================================================
33  * Visibilite
34  *============================================================================*/
35 
36 
37 /*----------------------------------------------------------------------------
38  * Fichiers `include' librairie standard C
39  *----------------------------------------------------------------------------*/
40 
41 
42 /*----------------------------------------------------------------------------
43  * Fichiers `include' publics du paquetage global "Utilitaire"
44  *----------------------------------------------------------------------------*/
45 
46 #include "ecs_def.h"
47 #include "ecs_tab.h"
48 
49 
50 /*----------------------------------------------------------------------------
51  * Fichiers `include' publics des paquetages visibles
52  *----------------------------------------------------------------------------*/
53 
54 
55 
56 /*----------------------------------------------------------------------------
57  * Fichiers `include' publics du paquetage courant
58  *----------------------------------------------------------------------------*/
59 
60 #include "ecs_table.h"
61 
62 
63 /*============================================================================
64  * Prototypes de fonctions publiques
65  *============================================================================*/
66 
67 /*----------------------------------------------------------------------------
68  * Fonction qui réalise le tri des types géométriques
69  * La fonction affiche le nombre d'éléments par type géométrique
70  *----------------------------------------------------------------------------*/
71 
73 ecs_table_def__trie_typ(ecs_table_t *this_table_def,
74  int dim_elt);
75 
76 /*----------------------------------------------------------------------------
77  * Fonction qui construit
78  * les définitions des faces par décomposition des tables des cellules
79  *----------------------------------------------------------------------------*/
80 
81 void
83  ecs_table_t *table_def_cel);
84 
85 /*----------------------------------------------------------------------------
86  * Fonction qui realise la fusion des definitions des elements
87  *----------------------------------------------------------------------------*/
88 
90 ecs_table_def__fusionne(ecs_table_t *this_table_def,
91  size_t *nbr_elt_cpct,
92  ecs_tab_int_t *signe_elt);
93 
94 /*----------------------------------------------------------------------------
95  * Fonction qui construit la liste des cellules attachées à une liste
96  * de faces fournie en argument.
97  *----------------------------------------------------------------------------*/
98 
100 ecs_table_def__liste_cel_fac(const size_t nbr_fac,
101  ecs_table_t *table_def_cel,
102  const ecs_tab_int_t liste_fac);
103 
104 /*----------------------------------------------------------------------------
105  * Fonction qui remplace les références à des éléments
106  * en des références à d'autres éléments liés aux premiers
107  * par un tableau de renumérotation qui peut être signé.
108  *----------------------------------------------------------------------------*/
109 
110 void
112  ecs_tab_int_t *tab_old_new);
113 
114 /*----------------------------------------------------------------------------
115  * Fonction qui construit un tableau de booleens conforme a une liste
116  * de sous-elements
117  * Un sous-element est a `true'
118  * s'il intervient dans la definition des elements
119  *----------------------------------------------------------------------------*/
120 
121 void
122 ecs_table_def__cree_masque(bool sselt_select[],
123  ecs_table_t *table_def_elt);
124 
125 /*----------------------------------------------------------------------------
126  * Suppression des sommets ne participant pas à la connectivité
127  * et mise à jour de la connectivité.
128  *----------------------------------------------------------------------------*/
129 
130 void
131 ecs_table_def__nettoie_nodal(size_t *n_vertices,
132  ecs_coord_t **vtx_coords,
133  ecs_table_t *table_def_fac,
134  ecs_table_t *table_def_cel);
135 
136 /*----------------------------------------------------------------------------
137  * Correction si nécessaire de l'orientation des éléments en connectivité
138  * nodale. L'argument liste_cel_err est optionnel.
139  *----------------------------------------------------------------------------*/
140 
141 void
143  ecs_table_t *table_def_fac,
144  ecs_table_t *table_def_cel,
145  ecs_tab_int_t *liste_cel_err,
146  bool correc_orient);
147 
148 /*----------------------------------------------------------------------------
149  * Fusion des sommets confondus d'après la longueur des arêtes des faces.
150  * La connectivité des faces est mise à jour.
151  *----------------------------------------------------------------------------*/
152 
153 void
154 ecs_table_def__nettoie_som_fac(size_t *n_vertices,
155  ecs_coord_t **vtx_coords,
156  ecs_table_t *table_def_fac);
157 
158 /*----------------------------------------------------------------------------
159  * Fonction qui supprime les éventuelles faces dégénérées
160  *----------------------------------------------------------------------------*/
161 
164 
165 /*----------------------------------------------------------------------------
166  * Fonction qui renvoie un tableau associant un type à chaque face, sous
167  * forme de masque : 0 pour face isolée, 1 ou 2 pour face de bord (1 si
168  * cellule avec cette face normale sortante, 2 si cellule avec cette face
169  * normale entrante), 1+2 = 3 pour face interne, et 4 ou plus pour tous
170  * les autres cas, correspondant à une erreur de connectivité (+4 pour faces
171  * voyant au moins deux cellules avec face normale sortante, +8 pour faces
172  * voyant au moins deux cellules avec face normale entrante).
173  *
174  * Le type de chaque face pourra être modifié ultérieurement en fonction
175  * des informations de périodicité.
176  *----------------------------------------------------------------------------*/
177 
180  ecs_table_t *table_def_fac);
181 
182 /*----------------------------------------------------------------------------
183  * Fonction qui renvoie un tableau associant un type à chaque face les
184  * numéros des cellules définies par cette face (normale sortante,
185  * puis normale entrante). On affecte une valeur 0 lorsqu'il n'y a pas de
186  * cellule correspondante directe (la périodicité n'est donc pas prise en
187  * compte à ce niveau).
188  *
189  * On suppose que la cohérence du maillage a déjà été vérifiée et
190  * qu'aucune face n'appartient à plus d'une cellule par côté.
191  *----------------------------------------------------------------------------*/
192 
194 ecs_table_def__fac_cel(ecs_table_t *table_def_cel,
195  ecs_table_t *table_def_fac);
196 
197 /*----------------------------------------------------------------------------*/
198 
199 #endif /* _ECS_TABLE_DEF_H_ */
ecs_tab_int_t ecs_table_def__fac_cel(ecs_table_t *table_def_cel, ecs_table_t *table_def_fac)
Definition: ecs_table_def.c:3008
void ecs_table_def__orient_nodal(ecs_coord_t *vtx_coords, ecs_table_t *table_def_fac, ecs_table_t *table_def_cel, ecs_tab_int_t *liste_cel_err, bool correc_orient)
Definition: ecs_table_def.c:2473
double ecs_coord_t
Definition: ecs_def.h:133
ecs_tab_int_t ecs_table_def__fusionne(ecs_table_t *this_table_def, size_t *nbr_elt_cpct, ecs_tab_int_t *signe_elt)
Definition: ecs_table_def.c:1801
ecs_tab_int_t ecs_table_def__nettoie_fac(ecs_table_t *table_def_fac)
Definition: ecs_table_def.c:2820
void ecs_table_def__decompose_cel(ecs_table_t *vect_table_fac[], ecs_table_t *table_def_cel)
void ecs_table_def__cree_masque(bool sselt_select[], ecs_table_t *table_def_elt)
Definition: ecs_table_def.c:2318
void ecs_table_def__nettoie_nodal(size_t *n_vertices, ecs_coord_t **vtx_coords, ecs_table_t *table_def_fac, ecs_table_t *table_def_cel)
Definition: ecs_table_def.c:2361
void ecs_table_def__nettoie_som_fac(size_t *n_vertices, ecs_coord_t **vtx_coords, ecs_table_t *table_def_fac)
Definition: ecs_table_def.c:2702
ecs_tab_int_t ecs_table_def__trie_typ(ecs_table_t *this_table_def, int dim_elt)
Definition: ecs_table_def.c:1330
Definition: ecs_tab.h:39
Definition: ecs_table_priv.h:63
void ecs_table_def__remplace_ref(ecs_table_t *table_def, ecs_tab_int_t *tab_old_new)
Definition: ecs_table_def.c:2268
ecs_tab_int_t ecs_table_def__liste_cel_fac(const size_t nbr_fac, ecs_table_t *table_def_cel, const ecs_tab_int_t liste_fac)
Definition: ecs_table_def.c:2172
ecs_tab_int_t ecs_table_def__typ_fac_cel(ecs_table_t *table_def_cel, ecs_table_t *table_def_fac)
Definition: ecs_table_def.c:2923