src/fvm/fvm_nodal_from_desc.h Source File

| programmer's documentation

- Main Page
- Related Pages
- Modules
- Data Structures
- Files

- File List
- Globals

All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
fvm_nodal_from_desc.h
Go to the documentation of this file.
1 #ifndef __FVM_NODAL_FROM_DESC_H__
2 #define __FVM_NODAL_FROM_DESC_H__
3
4 /*============================================================================
5 * Initialization of a nodal connectivity definition based upon
6 * a (possibly partial) descending connectivity
7 *============================================================================*/
8
9 /*
10 This file is part of Code_Saturne, a general-purpose CFD tool.
11
12 Copyright (C) 1998-2013 EDF S.A.
13
14 This program is free software; you can redistribute it and/or modify it under
15 the terms of the GNU General Public License as published by the Free Software
16 Foundation; either version 2 of the License, or (at your option) any later
17 version.
18
19 This program is distributed in the hope that it will be useful, but WITHOUT
20 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
21 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
22 details.
23
24 You should have received a copy of the GNU General Public License along with
25 this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
26 Street, Fifth Floor, Boston, MA 02110-1301, USA.
27 */
28
29 /*----------------------------------------------------------------------------*/
30
31 #include "cs_defs.h"
32
33 /*----------------------------------------------------------------------------
34 * Local headers
35 *----------------------------------------------------------------------------*/
36
37 #include "fvm_defs.h"
38 #include "fvm_nodal.h"
39
40 /*----------------------------------------------------------------------------*/
41
42 BEGIN_C_DECLS
43
44 /*=============================================================================
45 * Public function prototypes
46 *============================================================================*/
47
48 /*----------------------------------------------------------------------------
49 * Convert and add cells from an descending connectivity mesh to a nodal mesh.
50 *
51 * If the optional filter list extr_cells[] argument is non-NULL, cells
52 * {extr_cells[0], extr_cells[1], extr_cells[n_extr_cells - 1]} are converted
53 * and added to the nodal mesh. If this filter is set to NULL, cells
54 * {1, 2, ..., n_extr_cells} are considered.
55 *
56 * In addition, an optional parent_cell_num[] array may also be given, in
57 * case the descending connectivity mesh definition is based on a temporary
58 * subset of a parent mesh, (corresponding to the parent_cell_num[] list,
59 * using 1 to n numbering), and the final nodal mesh element parent numbering
60 * should correspond to that parent mesh and not the temporary subset.
61 *
62 * parameters:
63 * this_nodal <-> nodal mesh structure
64 * n_extr_cells <-- count of cells to add
65 * extr_cells <-- optional filter list of cells to extract (1 to n)
66 * n_face_lists <-- number of face lists
67 * face_list_shift <-- face list to common number index shifts;
68 * size: n_face_lists
69 * face_vertex_idx <-- face -> vertex indexes (per face list)
70 * face_vertex_num <-- face -> vertex numbers (per face list)
71 * cell_face_idx <-- cell -> face indexes (1 to n)
72 * cell_face_num <-- cell -> face numbers (1 to n)
73 * cell_gc_id <-- cell -> group class ids, or NULL
74 * parent_cell_num <-- cell -> parent cell number (1 to n) if non-trivial
75 * (i.e. if cell definitions correspond to a subset
76 * of the parent mesh), NULL otherwise.
77 * cell_face_list --> numbers of faces defining polyhedra
78 *----------------------------------------------------------------------------*/
79
80 void
81 fvm_nodal_from_desc_add_cells(fvm_nodal_t *this_nodal,
82 const cs_lnum_t n_extr_cells,
83 const cs_lnum_t extr_cells[],
84 const int n_face_lists,
85 const cs_lnum_t face_list_shift[],
86 const cs_lnum_t *face_vertex_idx[],
87 const cs_lnum_t *face_vertex_num[],
88 const cs_lnum_t cell_face_idx[],
89 const cs_lnum_t cell_face_num[],
90 const int cell_gc_id[],
91 const cs_lnum_t parent_cell_num[],
92 cs_lnum_t *cell_face_list[]);
93
94 /*----------------------------------------------------------------------------
95 * Convert and add faces from an descending connectivity mesh to a nodal mesh.
96 *
97 * If the optional filter list extr_faces[] argument is non-NULL, faces
98 * {extr_faces[0], extr_faces[1], extr_faces[n_extr_faces - 1]} are converted
99 * and added to the nodal mesh. If this filter is set to NULL, faces
100 * {1, 2, ..., n_extr_faces} are considered.
101 *
102 * In addition, an optional parent_face_num[] array may also be given, in
103 * case the descending connectivity mesh definition is based on a temporary
104 * subset of a parent mesh, (corresponding to the parent_face_num[] list,
105 * using 1 to n numbering), and the final nodal mesh element parent numbering
106 * should correspond to that parent mesh and not the temporary subset.
107 *
108 * parameters:
109 * this_nodal <-> nodal mesh structure
110 * n_extr_faces <-- count of faces to add
111 * extr_faces <-- optional filter list of faces to extract (1 to n)
112 * n_face_lists <-- number of face lists
113 * face_list_shift <-- face list to common number index shifts;
114 * size: n_face_lists
115 * face_vertex_idx <-- face -> vertex indexes (per face list)
116 * face_vertex_num <-- face -> vertex numbers (per face list)
117 * face_gc_id <-- face -> group class ids, or NULL (per face list)
118 * parent_face_num <-- face -> parent face number (1 to n) if non-trivial
119 * (i.e. if face definitions correspond to a subset
120 * of the parent mesh), NULL otherwise.
121 *----------------------------------------------------------------------------*/
122
123 void
124 fvm_nodal_from_desc_add_faces(fvm_nodal_t *this_nodal,
125 const cs_lnum_t n_extr_faces,
126 const cs_lnum_t extr_faces[],
127 const int n_face_lists,
128 const cs_lnum_t face_list_shift[],
129 const cs_lnum_t *face_vertex_idx[],
130 const cs_lnum_t *face_vertex_num[],
131 const int *face_gc_id[],
132 const cs_lnum_t parent_face_num[]);
133
134 /*----------------------------------------------------------------------------
135 * Determination of a given cell's type.
136 *
137 * If the optional cell_vtx[8] array is given, it is filled with the vertex
138 * indexes of cell's vertices, unless the cell is a general polyhedron.
139 *
140 * parameters:
141 * cell_id <-- cell id (0 to n-1)
142 * n_face_lists <-- number of face lists
143 * face_list_shift <-- face list to common number index shifts;
144 * size: n_face_lists
145 * face_vertex_idx <-- face -> vertex indexes (per face list)
146 * face_vertex_num <-- face -> vertex numbers (per face list)
147 * cell_face_idx <-- cell -> face indexes (1 to n)
148 * cell_face_num <-- cell -> face numbers (1 to n)
149 * vertex_num --> nodal connectivity of cell, if not a general
150 * polyhedron
151 *
152 * returns:
153 * type of cell defined by cell_id
154 *----------------------------------------------------------------------------*/
155
156 fvm_element_t
157 fvm_nodal_from_desc_cell(const cs_lnum_t cell_id,
158 const int n_face_lists,
159 const cs_lnum_t face_list_shift[],
160 const cs_lnum_t *face_vertex_idx[],
161 const cs_lnum_t *face_vertex_num[],
162 const cs_lnum_t cell_face_idx[],
163 const cs_lnum_t cell_face_num[],
164 cs_lnum_t vertex_num[8]);
165
166 /*----------------------------------------------------------------------------*/
167
168 END_C_DECLS
169
170 #endif /* __FVM_NODAL_FROM_DESC_H__ */