programmer's documentation
cs_cdo_local.h
Go to the documentation of this file.
1 #ifndef __CS_CDO_LOCAL_H__
2 #define __CS_CDO_LOCAL_H__
3 
4 /*============================================================================
5  * Routines to handle low-level routines related to CDO local quantities:
6  * - local matrices (stored in dense format),
7  * - local quantities related to a cell.
8  *============================================================================*/
9 
10 /*
11  This file is part of Code_Saturne, a general-purpose CFD tool.
12 
13  Copyright (C) 1998-2018 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  * Local headers
32  *----------------------------------------------------------------------------*/
33 
34 #include "cs_cdo_connect.h"
35 #include "cs_cdo_quantities.h"
36 #include "cs_flag.h"
37 #include "cs_sdm.h"
38 
39 /*----------------------------------------------------------------------------*/
40 
42 
43 /*============================================================================
44  * Macro definitions
45  *============================================================================*/
46 
47 /* According to the flag which are set, different quantities or connectivities
48  are built on-the-fly and stored in a local cache structure (cell/base) */
49 
50 #define CS_CDO_LOCAL_PV (1 << 0) // 1: local info. for vertices
51 #define CS_CDO_LOCAL_PVQ (1 << 1) // 2: local quant. on vertices
52 #define CS_CDO_LOCAL_PE (1 << 2) // 4: local info. for edges
53 #define CS_CDO_LOCAL_PEQ (1 << 3) // 8: local quant. on edges
54 #define CS_CDO_LOCAL_DFQ (1 << 4) // 16: local quant. on dual faces
55 #define CS_CDO_LOCAL_PF (1 << 5) // 32: local info. for faces
56 #define CS_CDO_LOCAL_PFQ (1 << 6) // 64: local quant. on faces
57 #define CS_CDO_LOCAL_DEQ (1 << 7) // 128: local quant. on dual edges
58 #define CS_CDO_LOCAL_EV (1 << 8) // 256: local e2v connectivity
59 #define CS_CDO_LOCAL_FE (1 << 9) // 512: local f2e connectivity
60 #define CS_CDO_LOCAL_FEQ (1 << 10) // 1024: local f2e quantities
61 #define CS_CDO_LOCAL_EF (1 << 11) // 2048: local e2f connectivity
62 #define CS_CDO_LOCAL_EFQ (1 << 12) // 4096: local e2f quantities
63 #define CS_CDO_LOCAL_HFQ (1 << 13) // 8192: local quant. on face pyramids
64 #define CS_CDO_LOCAL_DIAM (1 << 14) // 16384: local diameters on faces/cell
65 
66 /*============================================================================
67  * Type definitions
68  *============================================================================*/
69 
70 /* Structure which belongs to one thread */
71 typedef struct {
72 
73  /* Temporary buffers */
74  short int *ids; // local ids
75  double *values; // local values
76  cs_real_3_t *vectors; // local 3-dimensional vectors
77 
78  /* Structures used to build specific terms composing the algebraic system */
79  cs_sdm_t *hdg; // local hodge matrix for diffusion (may be NULL)
80  cs_sdm_t *loc; // local square matrix of size n_cell_dofs;
81  cs_sdm_t *aux; // auxiliary local square matrix of size n_cell_dofs;
82 
83  /* Specific members for the weakly enforcement of Dirichlet BCs (diffusion) */
84  double eig_ratio; // ratio of the eigenvalues of the diffusion tensor
85  double eig_max; // max. value among eigenvalues
86 
87  /* Store the cellwise value for the diffusion, time and reaction properties */
88  cs_real_33_t pty_mat; // If not isotropic
89  double pty_val; // If isotropic
90 
92 
93 /* Structure used to store a local system (cell-wise for instance) */
94 typedef struct {
95 
96  cs_lnum_t c_id; // cell id
97 
98  int n_dofs; // Number of Degrees of Freedom (DoFs) in this cell
99  cs_lnum_t *dof_ids; // DoF ids
100  cs_flag_t *dof_flag; // size = number of DoFs
101 
102  cs_sdm_t *mat; // cellwise view of the system matrix
103  double *rhs; // cellwise view of the right-hand side
104  double *source; // cellwise view of the source term array
105  double *val_n; /* values of the unkown at the time t_n (the
106  last computed) */
107 
108  /* Boundary conditions for the local system */
109  short int n_bc_faces; // Number of border faces associated to a cell
110  short int *bf_ids; // List of face ids in the cell numbering
111  cs_flag_t *bf_flag; // size n_bc_faces
112 
113  /* Dirichlet BCs */
115  double *dir_values; // Values of the Dirichlet BCs (size = n_dofs)
116 
117  /* Neumann BCs */
118  bool has_nhmg_neumann; /* Non-homogeneous Neumann BCs */
119  double *neu_values; // Values of the Neumann BCs (size = n_dofs)
120 
121  /* Robin BCs */
122  bool has_robin;
123  double *rob_values; // Values of the Robin BCs (size = 2*n_dofs)
124 
125 } cs_cell_sys_t;
126 
127 /* Structure used to get a better memory locality. Map existing structure
128  into a more compact one dedicated to a cell.
129  Arrays are allocated to n_max_vbyc or to n_max_ebyc.
130  Cell-wise numbering is based on the c2e and c2v connectivity.
131 */
132 
133 typedef struct {
134 
135  cs_flag_t flag; // indicate which quantities have to be defined
136  fvm_element_t type; // type of element related to this cell
137 
138  /* Sizes used to allocate buffers */
139  short int n_max_vbyc;
140  short int n_max_ebyc;
141  short int n_max_fbyc;
142 
143  /* Cell information */
144  cs_lnum_t c_id; // id of related cell
145  cs_real_3_t xc; // coordinates of the cell center
146  double vol_c; // volume of the current cell
147  double diam_c; // diameter of the current cell
148 
149  /* Vertex information */
150  short int n_vc; // local number of vertices in a cell
151  cs_lnum_t *v_ids; // vertex ids on this rank
152  double *xv; // local vertex coordinates (copy)
153  double *wvc; // weight |vol_dc(v) cap vol_c|/|vol_c for each cell vtx
154 
155  /* Edge information */
156  short int n_ec; // local number of edges in a cell
157  cs_lnum_t *e_ids; // edge ids on this rank
158  cs_quant_t *edge; // local edge quantities (xe, length and unit vector)
159  cs_nvec3_t *dface; // local dual face quantities (area and unit normal)
160 
161  /* Face information */
162  short int n_fc; // local number of faces in a cell
163  cs_lnum_t *f_ids; // face ids on this rank
164  short int *f_sgn; // incidence number between f and c
165  double *f_diam; // diameters of local faces
166  double *hfc; // height of the pyramid of basis f and apex c
167  cs_quant_t *face; // local face quantities (xf, area and unit normal)
168  cs_nvec3_t *dedge; // local dual edge quantities (length and unit vector)
169 
170  /* Local e2v connectivity: size 2*n_ec (allocated to 2*n_max_ebyc) */
171  short int *e2v_ids; // cell-wise edge -> vertices connectivity
172  short int *e2v_sgn; // cell-wise edge -> vertices orientation (-1 or +1)
173 
174  /* Local f2e connectivity: size = 2*n_max_ebyc */
175  short int *f2e_idx; // size n_fc + 1
176  short int *f2e_ids; // size 2*n_max_ebyc
177  double *tef; // |tef| area of the triangle of base |e| and apex xf
178 
179  /* Local e2f connectivity: size 2*n_ec (allocated to 2*n_max_ebyc) */
180  short int *e2f_ids; // cell-wise edge -> faces connectivity
181  cs_nvec3_t *sefc; // portion of dual faces (2 triangles by edge)
182 
184 
185 /* Structure used to get a better memory locality. Map existing structure
186  into a more compact one dedicated to a face.
187  Arrays are allocated to n_max_vbyf (= n_max_ebyf).
188  Face-wise numbering is based on the f2e connectivity.
189 */
190 
191 typedef struct {
192 
193  short int n_max_vbyf; // = n_max_ebyf
194 
195  cs_lnum_t c_id; // id of related cell
196  cs_real_3_t xc; // pointer to the coordinates of the cell center
197 
198  /* Face information */
199  cs_lnum_t f_id; // local mesh face id
200  short int f_sgn; // incidence number between f and c
201  cs_quant_t face; // local face quantities (xf, area and unit normal)
202  cs_nvec3_t dedge; // local dual edge quantities (length and unit vector)
203 
204  /* Vertex information */
205  short int n_vf; // local number of vertices on this face
206  cs_lnum_t *v_ids; // vertex ids on this rank or in the cellwise numbering
207  double *xv; // local vertex coordinates (copy)
208  double *wvf; // weight related to each vertex
209 
210  /* Edge information */
211  short int n_ef; // local number of edges in on this face (= n_vf)
212  cs_lnum_t *e_ids; // edge ids on this rank or in the cellwise numbering
213  cs_quant_t *edge; // local edge quantities (xe, length and unit vector)
214  double *tef; // area of the triangle of base e and apex xf
215 
216  /* Local e2v connectivity: size 2*n_ec (allocated to 2*n_max_ebyf) */
217  short int *e2v_ids; // face-wise edge -> vertices connectivity
218 
220 
221 /*============================================================================
222  * Global variables
223  *============================================================================*/
224 
227 
228 /*============================================================================
229  * Public function prototypes
230  *============================================================================*/
231 
232 /*----------------------------------------------------------------------------*/
239 /*----------------------------------------------------------------------------*/
240 
241 void
243 
244 /*----------------------------------------------------------------------------*/
249 /*----------------------------------------------------------------------------*/
250 
251 void
253 
254 /*----------------------------------------------------------------------------*/
265 /*----------------------------------------------------------------------------*/
266 
268 cs_cell_sys_create(int n_max_dofbyc,
269  int n_max_fbyc,
270  short int n_blocks,
271  short int *block_sizes);
272 
273 /*----------------------------------------------------------------------------*/
283 /*----------------------------------------------------------------------------*/
284 
285 void
286 cs_cell_sys_reset(cs_flag_t cell_flag,
287  int n_dofbyc,
288  int n_fbyc,
289  cs_cell_sys_t *csys);
290 
291 /*----------------------------------------------------------------------------*/
297 /*----------------------------------------------------------------------------*/
298 
299 void
301 
302 /*----------------------------------------------------------------------------*/
310 /*----------------------------------------------------------------------------*/
311 
312 void
313 cs_cell_sys_dump(const char msg[],
314  const cs_lnum_t c_id,
315  const cs_cell_sys_t *csys);
316 
317 /*----------------------------------------------------------------------------*/
323 /*----------------------------------------------------------------------------*/
324 
327 
328 /*----------------------------------------------------------------------------*/
334 /*----------------------------------------------------------------------------*/
335 
336 void
338 
339 /*----------------------------------------------------------------------------*/
345 /*----------------------------------------------------------------------------*/
346 
347 void
349 
350 /*----------------------------------------------------------------------------*/
356 /*----------------------------------------------------------------------------*/
357 
358 void
360 
361 /*----------------------------------------------------------------------------*/
369 /*----------------------------------------------------------------------------*/
370 
372 cs_cdo_local_get_cell_mesh(int mesh_id);
373 
374 /*----------------------------------------------------------------------------*/
382 /*----------------------------------------------------------------------------*/
383 
385 cs_cdo_local_get_face_mesh(int mesh_id);
386 
387 /*----------------------------------------------------------------------------*/
395 /*----------------------------------------------------------------------------*/
396 
398 cs_cell_mesh_create(const cs_cdo_connect_t *connect);
399 
400 /*----------------------------------------------------------------------------*/
406 /*----------------------------------------------------------------------------*/
407 
408 void
410 
411 /*----------------------------------------------------------------------------*/
422 /*----------------------------------------------------------------------------*/
423 
424 void
426  cs_flag_t flag,
427  const cs_cdo_connect_t *connect,
428  const cs_cdo_quantities_t *quant,
429  cs_cell_mesh_t *cm);
430 
431 /*----------------------------------------------------------------------------*/
440 /*----------------------------------------------------------------------------*/
441 
442 static inline void
444  const cs_cell_mesh_t *cm,
445  short int *n_vf,
446  short int *v_ids)
447 {
448  /* Reset */
449  *n_vf = 0;
450  for (short int v = 0; v < cm->n_vc; v++) v_ids[v] = -1;
451 
452  /* Tag vertices belonging to the current face f */
453  for (short int i = cm->f2e_idx[f]; i < cm->f2e_idx[f+1]; i++) {
454 
455  const short int shift_e = (short int)2*cm->f2e_ids[i];
456  v_ids[cm->e2v_ids[shift_e]] = 1;
457  v_ids[cm->e2v_ids[shift_e+1]] = 1;
458 
459  } // Loop on face edges
460 
461  for (short int v = 0; v < cm->n_vc; v++) {
462  if (v_ids[v] > 0)
463  v_ids[*n_vf] = v, *n_vf += 1;
464  }
465 
466 }
467 
468 /*----------------------------------------------------------------------------*/
476 /*----------------------------------------------------------------------------*/
477 
479 cs_face_mesh_create(short int n_max_vbyf);
480 
481 /*----------------------------------------------------------------------------*/
487 /*----------------------------------------------------------------------------*/
488 
489 void
491 
492 /*----------------------------------------------------------------------------*/
502 /*----------------------------------------------------------------------------*/
503 
504 void
506  cs_lnum_t f_id,
507  const cs_cdo_connect_t *connect,
508  const cs_cdo_quantities_t *quant,
509  cs_face_mesh_t *fm);
510 
511 /*----------------------------------------------------------------------------*/
521 /*----------------------------------------------------------------------------*/
522 
523 void
525  short int f,
526  cs_face_mesh_t *fm);
527 
528 /*----------------------------------------------------------------------------*/
539 /*----------------------------------------------------------------------------*/
540 
541 static inline void
542 cs_cell_mesh_get_next_3_vertices(const short int *f2e_ids,
543  const short int *e2v_ids,
544  short int *v0,
545  short int *v1,
546  short int *v2)
547 {
548  const short int e0 = f2e_ids[0];
549  const short int e1 = f2e_ids[1];
550  const short int tmp = e2v_ids[2*e1];
551 
552  *v0 = e2v_ids[2*e0];
553  *v1 = e2v_ids[2*e0+1];
554  *v2 = ((tmp != *v0) && (tmp != *v1)) ? tmp : e2v_ids[2*e1+1];
555 }
556 
557 /*----------------------------------------------------------------------------*/
558 
560 
561 #endif /* __CS_CDO_LOCAL_H__ */
cs_lnum_t * e_ids
Definition: cs_cdo_local.h:212
cs_face_mesh_t * cs_face_mesh_create(short int n_max_vbyf)
Allocate a cs_face_mesh_t structure.
Definition: cs_cdo_local.c:1198
cs_cell_sys_t * cs_cell_sys_create(int n_max_dofbyc, int n_max_fbyc, short int n_blocks, short int *block_sizes)
Allocate a cs_cell_sys_t structure.
Definition: cs_cdo_local.c:230
short int * bf_ids
Definition: cs_cdo_local.h:110
void cs_cdo_local_initialize(const cs_cdo_connect_t *connect)
Allocate global structures related to a cs_cell_mesh_t and cs_face_mesh_t structures.
Definition: cs_cdo_local.c:133
bool has_dirichlet
Definition: cs_cdo_local.h:114
double pty_val
Definition: cs_cdo_local.h:89
short int * e2f_ids
Definition: cs_cdo_local.h:180
double * tef
Definition: cs_cdo_local.h:177
double vol_c
Definition: cs_cdo_local.h:146
void cs_cell_mesh_free(cs_cell_mesh_t **p_cm)
Free a cs_cell_mesh_t structure.
Definition: cs_cdo_local.c:768
cs_sdm_t * loc
Definition: cs_cdo_local.h:80
void cs_cell_mesh_build(cs_lnum_t c_id, cs_flag_t flag, const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *quant, cs_cell_mesh_t *cm)
Define a cs_cell_mesh_t structure for a given cell id. According to the requested level...
Definition: cs_cdo_local.c:818
cs_cell_builder_t * cs_cell_builder_create(void)
Allocate cs_cell_builder_t structure.
Definition: cs_cdo_local.c:428
cs_lnum_t * f_ids
Definition: cs_cdo_local.h:163
cs_lnum_t f_id
Definition: cs_cdo_local.h:199
static void cs_cell_mesh_get_f2v(short int f, const cs_cell_mesh_t *cm, short int *n_vf, short int *v_ids)
Retrieve the list of vertices attached to a face.
Definition: cs_cdo_local.h:443
short int * ids
Definition: cs_cdo_local.h:74
cs_sdm_t * hdg
Definition: cs_cdo_local.h:79
double * wvc
Definition: cs_cdo_local.h:153
short int n_max_vbyf
Definition: cs_cdo_local.h:193
double * tef
Definition: cs_cdo_local.h:214
double * source
Definition: cs_cdo_local.h:104
cs_lnum_t * dof_ids
Definition: cs_cdo_local.h:99
short int n_max_vbyc
Definition: cs_cdo_local.h:139
#define BEGIN_C_DECLS
Definition: cs_defs.h:461
double * rob_values
Definition: cs_cdo_local.h:123
double * dir_values
Definition: cs_cdo_local.h:115
short int * e2v_sgn
Definition: cs_cdo_local.h:172
cs_nvec3_t * dface
Definition: cs_cdo_local.h:159
void cs_cdo_local_finalize(void)
Free global structures related to cs_cell_mesh_t and cs_face_mesh_t structures.
Definition: cs_cdo_local.c:183
double * val_n
Definition: cs_cdo_local.h:105
double * hfc
Definition: cs_cdo_local.h:166
short int n_vf
Definition: cs_cdo_local.h:205
Definition: cs_cdo_local.h:133
double eig_ratio
Definition: cs_cdo_local.h:84
void cs_cell_builder_free(cs_cell_builder_t **p_cb)
Free a cs_cell_builder_t structure.
Definition: cs_cdo_local.c:461
Definition: cs_cdo_connect.h:69
short int * f2e_ids
Definition: cs_cdo_local.h:176
cs_sdm_t * mat
Definition: cs_cdo_local.h:102
cs_flag_t * dof_flag
Definition: cs_cdo_local.h:100
cs_lnum_t * v_ids
Definition: cs_cdo_local.h:206
double * xv
Definition: cs_cdo_local.h:152
short int n_ef
Definition: cs_cdo_local.h:211
cs_nvec3_t * sefc
Definition: cs_cdo_local.h:181
Definition: cs_cdo_quantities.h:94
cs_nvec3_t dedge
Definition: cs_cdo_local.h:202
Definition: cs_defs.h:337
Definition: cs_cdo_local.h:94
short int n_max_ebyc
Definition: cs_cdo_local.h:140
cs_lnum_t * v_ids
Definition: cs_cdo_local.h:151
int n_dofs
Definition: cs_cdo_local.h:98
short int * f_sgn
Definition: cs_cdo_local.h:164
double * wvf
Definition: cs_cdo_local.h:208
double * rhs
Definition: cs_cdo_local.h:103
double precision, dimension(:,:,:), allocatable v
Definition: atimbr.f90:114
double eig_max
Definition: cs_cdo_local.h:85
double diam_c
Definition: cs_cdo_local.h:147
cs_sdm_t * aux
Definition: cs_cdo_local.h:81
Definition: cs_field_pointer.h:123
cs_lnum_t c_id
Definition: cs_cdo_local.h:96
void cs_cell_mesh_dump(cs_cell_mesh_t *cm)
Dump a cs_cell_mesh_t structure.
Definition: cs_cdo_local.c:657
fvm_element_t
Definition: fvm_defs.h:48
fvm_element_t type
Definition: cs_cdo_local.h:136
cs_lnum_t c_id
Definition: cs_cdo_local.h:144
cs_cell_mesh_t * cs_cdo_local_get_cell_mesh(int mesh_id)
Get a pointer to a cs_cell_mesh_t structure corresponding to mesh id.
Definition: cs_cdo_local.c:491
short int n_max_fbyc
Definition: cs_cdo_local.h:141
void cs_face_mesh_build_from_cell_mesh(const cs_cell_mesh_t *cm, short int f, cs_face_mesh_t *fm)
Define a cs_face_mesh_t structure for a given cell from a cs_cell_mesh_t structure. v_ids and e_ids are defined in the cell numbering given by cm.
Definition: cs_cdo_local.c:1413
void cs_cell_sys_reset(cs_flag_t cell_flag, int n_dofbyc, int n_fbyc, cs_cell_sys_t *csys)
Reset all members related to BC and some other ones in a cs_cell_sys_t structure. ...
Definition: cs_cdo_local.c:321
cs_flag_t * bf_flag
Definition: cs_cdo_local.h:111
short int n_fc
Definition: cs_cdo_local.h:162
short int f_sgn
Definition: cs_cdo_local.h:200
cs_face_mesh_t * cs_cdo_local_get_face_mesh(int mesh_id)
Get a pointer to a cs_face_mesh_t structure corresponding to mesh id.
Definition: cs_cdo_local.c:510
cs_lnum_t * e_ids
Definition: cs_cdo_local.h:157
cs_nvec3_t * dedge
Definition: cs_cdo_local.h:168
cs_quant_t * edge
Definition: cs_cdo_local.h:213
double * f_diam
Definition: cs_cdo_local.h:165
cs_cell_mesh_t ** cs_cdo_local_cell_meshes
Definition: cs_cdo_local.c:78
short int * e2v_ids
Definition: cs_cdo_local.h:217
double * neu_values
Definition: cs_cdo_local.h:119
Definition: cs_cdo_local.h:71
cs_quant_t * face
Definition: cs_cdo_local.h:167
cs_real_t cs_real_3_t[3]
vector of 3 floating-point values
Definition: cs_defs.h:309
bool has_robin
Definition: cs_cdo_local.h:122
cs_flag_t flag
Definition: cs_cdo_local.h:135
cs_quant_t face
Definition: cs_cdo_local.h:201
void cs_cell_sys_free(cs_cell_sys_t **p_csys)
Free a cs_cell_sys_t structure.
Definition: cs_cdo_local.c:360
cs_real_3_t xc
Definition: cs_cdo_local.h:145
cs_real_33_t pty_mat
Definition: cs_cdo_local.h:88
Definition: cs_cdo_quantities.h:86
int cs_lnum_t
local mesh entity id
Definition: cs_defs.h:293
void cs_cell_sys_dump(const char msg[], const cs_lnum_t c_id, const cs_cell_sys_t *csys)
Dump a local system for debugging purpose.
Definition: cs_cdo_local.c:397
short int n_vc
Definition: cs_cdo_local.h:150
cs_real_3_t xc
Definition: cs_cdo_local.h:196
void cs_cell_mesh_reset(cs_cell_mesh_t *cm)
Initialize to invalid values a cs_cell_mesh_t structure.
Definition: cs_cdo_local.c:590
#define END_C_DECLS
Definition: cs_defs.h:462
short int * e2v_ids
Definition: cs_cdo_local.h:171
unsigned short int cs_flag_t
Definition: cs_defs.h:299
short int n_bc_faces
Definition: cs_cdo_local.h:109
cs_cell_mesh_t * cs_cell_mesh_create(const cs_cdo_connect_t *connect)
Allocate and initialize a cs_cell_mesh_t structure.
Definition: cs_cdo_local.c:529
double precision, dimension(ncharm), save e1
Definition: cpincl.f90:233
short int n_ec
Definition: cs_cdo_local.h:156
cs_real_t cs_real_33_t[3][3]
3x3 matrix of floating-point values
Definition: cs_defs.h:315
double * values
Definition: cs_cdo_local.h:75
Definition: cs_cdo_local.h:191
static void cs_cell_mesh_get_next_3_vertices(const short int *f2e_ids, const short int *e2v_ids, short int *v0, short int *v1, short int *v2)
Get the next three vertices in a row from a face to edge connectivity and a edge to vertex connectivi...
Definition: cs_cdo_local.h:542
void cs_face_mesh_build(cs_lnum_t c_id, cs_lnum_t f_id, const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *quant, cs_face_mesh_t *fm)
Define a cs_face_mesh_t structure for a given face/cell id.
Definition: cs_cdo_local.c:1271
cs_real_3_t * vectors
Definition: cs_cdo_local.h:76
short int * f2e_idx
Definition: cs_cdo_local.h:175
cs_face_mesh_t ** cs_cdo_local_face_meshes
Definition: cs_cdo_local.c:79
cs_lnum_t c_id
Definition: cs_cdo_local.h:195
double * xv
Definition: cs_cdo_local.h:207
cs_quant_t * edge
Definition: cs_cdo_local.h:158
void cs_face_mesh_free(cs_face_mesh_t **p_fm)
Free a cs_face_mesh_t structure.
Definition: cs_cdo_local.c:1238
bool has_nhmg_neumann
Definition: cs_cdo_local.h:118