Code_Saturne
CFD tool
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros
ecs_table_att.h
Go to the documentation of this file.
1 #ifndef _ECS_CHAMP_ATT_H_
2 #define _ECS_CHAMP_ATT_H_
3 
4 /*============================================================================
5  * Prototypes des fonctions
6  * associées à la structure `ecs_table_t' décrivant une table
7  * et propres aux tables auxiliaires de type "attribut"
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  * Visibilité
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 #include "ecs_famille.h"
55 #include "ecs_descr.h"
56 
57 /*----------------------------------------------------------------------------
58  * Fichiers `include' publics du paquetage courant
59  *----------------------------------------------------------------------------*/
60 
61 #include "ecs_table.h"
62 
63 
64 /*============================================================================
65  * Prototypes de fonctions publiques
66  *============================================================================*/
67 
68 /*----------------------------------------------------------------------------
69  * Fonction qui assemble une table donnée dans une table réceptrice donnée
70  *
71  * L'assemblage consiste à :
72  * - regrouper sous la même position les valeurs des 2 tables
73  * (cela suppose donc que les 2 tables ont le même nombre de positions)
74  * - assembler les membres des descripteurs des 2 tables
75  * Les descripteurs des 2 tables peuvent être à `NULL'
76  * et si le descripteur de la table réceptrice est à `NULL',
77  * le descripteur de la table assemblée est celui de la table à assembler
78  *
79  * La table à assembler est détruite apres assemblage
80  * ----------------------------------------------------------------------------
81  *
82  * Exemple :
83  * =======
84  *
85  * Soit la table à assembler :
86  *
87  * .---.---..---..---.---.---.
88  * assemb->val | 5 | 3 || 4 || 5 | 2 | 6 |
89  * `---'---'`---'`---'---'---'
90  * 0 1 2 3 4 5
91  *
92  *
93  * .---.---.---.---.---.
94  * assemb->pos | 1 | 3 | 4 | 4 | 7 |
95  * `---'---'---'---'---'
96  * 0 1 2 3 4
97  *
98  *
99  * dans la table réceptrice :
100  *
101  * .---..---..---.---..---.
102  * recept->val | 4 || 5 || 6 | 6 || 1 |
103  * `---'`---'`---'---'`---'
104  * 0 1 2 3 4
105  *
106  *
107  * .---.---.---.---.---.
108  * recept->pos | 1 | 2 | 3 | 5 | 6 |
109  * `---'---'---'---'---'
110  * 0 1 2 3 4
111  *
112  *
113  * La table réceptrice devient :
114  *
115  * .---.---.---..---.---..---.---..---.---.---.---.
116  * recept->val | 4 | 5 | 3 || 5 | 4 || 6 | 6 || 1 | 5 | 2 | 6 |
117  * `---'---'---'`---'---'`---'---'`---'---'---'---'
118  * 0 1 2 3 4 5 6 7 8 9 10
119  *
120  *
121  * .---.---.---.---.---.
122  * recept->pos | 1 | 4 | 6 | 8 | 12|
123  * `---'---'---'---'---'
124  * 0 1 2 3 4
125  *
126  *----------------------------------------------------------------------------*/
127 
128 void
130  ecs_table_t *table_assemb);
131 
132 
133 /*----------------------------------------------------------------------------
134  * Fonction réalisant la mise à jour des valeurs d'un attribut des élément
135  * lorque ceux-ci sont renumérotés. Chaque élément d'origine a au
136  * maximum un élément correspondant, mais un nouvel élément peut résulter
137  * de la fusion de plusieurs éléments d'origine, et en conserver tous
138  * les attributs.
139  *----------------------------------------------------------------------------*/
140 
141 void
142 ecs_table_att__herite(ecs_table_t *table_att_elt,
143  ecs_tab_int_t *tab_old_new);
144 
145 
146 /*----------------------------------------------------------------------------
147  * Fonction réalisant la transformation d'une table
148  * en fusionnant les propriétés de ses éléments
149  * qui sont identiquement transformes par le vecteur de transformation donné
150  *----------------------------------------------------------------------------*/
151 
152 void
153 ecs_table_att__fusionne(ecs_table_t *this_table_att,
154  size_t nbr_elt_new,
155  const ecs_tab_int_t vect_transf);
156 
157 /*----------------------------------------------------------------------------
158  * Fonction qui construit les familles à partir
159  * de la liste chaînée de tous les tables de type "attribut"
160  * pour toutes des entités ; ces familles sont ajoutées à la liste
161  * chaînée fournie en argument ;
162  *
163  * Elle remplace la table attribut par une table "famille" par entité
164  *
165  * Elle détermine aussi :
166  * - le nombre de familles
167  *----------------------------------------------------------------------------*/
168 
169 int *
171  ecs_famille_t **vect_fam_tete,
172  int num_fam_deb,
173  int *nbr_fam);
174 
175 /*----------------------------------------------------------------------------
176  * Fonction qui crée le table "groupe" à partir
177  * de la table "famille" et de la liste chaînée des familles
178  *----------------------------------------------------------------------------*/
179 
180 ecs_table_t *
181 ecs_table_att__cree_att_fam(size_t n_elts,
182  int *elt_fam,
183  ecs_famille_t *famille);
184 
185 /*----------------------------------------------------------------------------*/
186 
187 #endif /* _ECS_TABLE_ATT_H_ */
int * ecs_table_att__construit_fam(ecs_table_t **table_att, ecs_famille_t **vect_fam_tete, int num_fam_deb, int *nbr_fam)
Definition: ecs_table_att.c:1598
void ecs_table_att__assemble(ecs_table_t *table_recept, ecs_table_t *table_assemb)
Definition: ecs_table_att.c:1310
Definition: ecs_famille_priv.h:70
Definition: ecs_tab.h:39
Definition: ecs_table_priv.h:63
void ecs_table_att__herite(ecs_table_t *table_att_elt, ecs_tab_int_t *tab_old_new)
Definition: ecs_table_att.c:1412
void ecs_table_att__fusionne(ecs_table_t *this_table_att, size_t nbr_elt_new, const ecs_tab_int_t vect_transf)
Definition: ecs_table_att.c:1467
ecs_table_t * ecs_table_att__cree_att_fam(size_t n_elts, int *elt_fam, ecs_famille_t *famille)
Definition: ecs_table_att.c:1687