7.1
general 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  * Functions to handle low-level functions 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-2021 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_param_cdo.h"
38 #include "cs_sdm.h"
39 
40 /*----------------------------------------------------------------------------*/
41 
43 
44 /*============================================================================
45  * Macro definitions
46  *============================================================================*/
47 
48 /*============================================================================
49  * Type definitions
50  *============================================================================*/
51 
60 typedef struct {
61 
81 
107  double gpty_val;
108  double tpty_val;
109  double rpty_vals[CS_CDO_N_MAX_REACTIONS];
110  double rpty_val;
111 
112  double *adv_fluxes;
128  int *ids;
129  double *values;
132  cs_sdm_t *loc;
133  cs_sdm_t *aux;
134 
140 
146 typedef struct {
147 
150  int n_dofs;
154  cs_sdm_t *mat;
155  double *rhs;
156  double *source;
157  double *val_n;
158  double *val_nm1;
165  short int n_bc_faces;
166  short int *_f_ids;
171  double *dir_values;
174  double *neu_values;
176  bool has_robin;
177  double *rob_values;
179  bool has_sliding;
181  bool has_internal_enforcement; /*<! At least one DoF enforced */
188 } cs_cell_sys_t;
189 
202 typedef struct {
203 
207  /* Sizes used to allocate buffers */
208  short int n_max_vbyc;
209  short int n_max_ebyc;
210  short int n_max_fbyc;
211 
212  /* Cell information */
215  double vol_c;
216  double diam_c;
218  /* Vertex information */
219  short int n_vc;
221  double *xv;
222  double *wvc;
224  /* Edge information */
225  short int n_ec;
231  /* Face information */
232  short int n_fc;
235  short int *f_sgn;
236  double *f_diam;
237  double *hfc;
242  /* Local e2v connectivity: size 2*n_ec (allocated to 2*n_max_ebyc) */
243  short int *e2v_ids;
244  short int *e2v_sgn;
246  /* Local f2v connectivity: size = 2*n_max_ebyc */
247  short int *f2v_idx;
248  short int *f2v_ids;
250  /* Local f2e connectivity: size = 2*n_max_ebyc */
251  short int *f2e_idx;
252  short int *f2e_ids;
253  short int *f2e_sgn;
254  double *tef;
256  /* Local e2f connectivity: size 2*n_ec (allocated to 2*n_max_ebyc) */
257  short int *e2f_ids;
261 
270 typedef struct {
271 
272  short int n_max_vbyf;
277  /* Face information */
279  short int f_sgn;
282  double pvol;
283  double hfc;
285  /* Vertex information */
286  short int n_vf;
288  double *xv;
289  double *wvf;
291  /* Edge information */
292  short int n_ef;
295  double *tef;
297  /* Local e2v connectivity: size 2*n_ec (allocated to 2*n_max_ebyf) */
298  short int *e2v_ids;
301 
302 /*
303  A cs_face_mesh_light_t structure is close to a cs_face_mesh_t structure
304  There are less members to be buildt quicker.
305  Such structure is always associated to a cs_cell_mesh_t structure
306 */
307 
308 typedef struct {
309 
310  short int n_max_vbyf; /* Max number of vertices belonging to a face
311  (= n_max_ebyf) */
312 
313  cs_lnum_t c_id; /* id of related cell in the mesh numbering */
314  short int f; /* id of the face in the cell mesh numbering */
315 
316  /* Vertex information */
317  short int n_vf; /* local number of vertices on this face */
318  short int *v_ids; /* vertex ids in the cellwise numbering */
319  double *wvf; /* weights related to each vertex */
320 
321  /* Edge information */
322  short int n_ef; /* local number of edges on this face (= n_vf) */
323  short int *e_ids; /* edge ids in the cellwise numbering */
324  double *tef; /* area of the triangle of base e and apex xf */
325 
327 
328 /*============================================================================
329  * Global variables
330  *============================================================================*/
331 
332 /* Auxiliary buffers for extra-operations related to local problems. These
333  * buffers are also used for computing quantities related to a cs_cell_mesh_t
334  * (there are as many buffers as threads since a call to these buffers can be
335  * inside an OpenMP directive */
336 extern int cs_cdo_local_d_buffer_size;
337 extern double **cs_cdo_local_d_buffer;
338 
339 /* Pointer of pointers to global structures */
343 
344 /*============================================================================
345  * Static inline function prototypes
346  *============================================================================*/
347 
348 /*----------------------------------------------------------------------------*/
354 /*----------------------------------------------------------------------------*/
355 
356 static inline int
357 cs_cdo_local_get_d_buffer_size(void)
358 {
360 }
361 
362 /*----------------------------------------------------------------------------*/
371 /*----------------------------------------------------------------------------*/
372 
373 static inline double *
374 cs_cdo_local_get_d_buffer(int thr_id)
375 {
376  assert(thr_id > -1 && thr_id < cs_glob_n_threads);
377  return cs_cdo_local_d_buffer[thr_id];
378 }
379 
380 /*----------------------------------------------------------------------------*/
388 /*----------------------------------------------------------------------------*/
389 
390 static inline bool
391 cs_cell_has_boundary_elements(const cs_cell_builder_t *const cb)
392 {
396  return true;
397  else
398  return false;
399 }
400 
401 /*----------------------------------------------------------------------------*/
411 /*----------------------------------------------------------------------------*/
412 
413 static inline short int
414 cs_cell_mesh_get_v(const cs_lnum_t v_id,
415  const cs_cell_mesh_t *const cm)
416 {
417  if (cm == NULL)
418  return -1;
419  for (short int v = 0; v < cm->n_vc; v++)
420  if (cm->v_ids[v] == v_id)
421  return v;
422  return -1;
423 }
424 
425 /*----------------------------------------------------------------------------*/
435 /*----------------------------------------------------------------------------*/
436 
437 static inline short int
438 cs_cell_mesh_get_e(const cs_lnum_t e_id,
439  const cs_cell_mesh_t *const cm)
440 {
441  if (cm == NULL)
442  return -1;
443  for (short int e = 0; e < cm->n_ec; e++)
444  if (cm->e_ids[e] == e_id)
445  return e;
446  return -1;
447 }
448 
449 /*----------------------------------------------------------------------------*/
459 /*----------------------------------------------------------------------------*/
460 
461 static inline short int
462 cs_cell_mesh_get_f(const cs_lnum_t f_id,
463  const cs_cell_mesh_t *const cm)
464 {
465  if (cm == NULL)
466  return -1;
467  for (short int f = 0; f < cm->n_fc; f++)
468  if (cm->f_ids[f] == f_id)
469  return f;
470  return -1;
471 }
472 
473 /*----------------------------------------------------------------------------*/
482 /*----------------------------------------------------------------------------*/
483 
484 static inline void
485 cs_cell_mesh_get_f2v(short int f,
486  const cs_cell_mesh_t *cm,
487  short int *n_vf,
488  short int *v_ids)
489 {
490  /* Reset */
491  *n_vf = 0;
492  for (short int v = 0; v < cm->n_vc; v++) v_ids[v] = -1;
493 
494  /* Tag vertices belonging to the current face f */
495  for (short int i = cm->f2e_idx[f]; i < cm->f2e_idx[f+1]; i++) {
496 
497  const int shift_e = 2*cm->f2e_ids[i];
498  v_ids[cm->e2v_ids[shift_e]] = 1;
499  v_ids[cm->e2v_ids[shift_e+1]] = 1;
500 
501  } /* Loop on face edges */
502 
503  for (short int v = 0; v < cm->n_vc; v++) {
504  if (v_ids[v] > 0)
505  v_ids[*n_vf] = v, *n_vf += 1;
506  }
507 
508 }
509 
510 /*----------------------------------------------------------------------------*/
521 /*----------------------------------------------------------------------------*/
522 
523 static inline void
524 cs_cell_mesh_get_next_3_vertices(const short int *f2e_ids,
525  const short int *e2v_ids,
526  short int *v0,
527  short int *v1,
528  short int *v2)
529 {
530  const short int e0 = f2e_ids[0];
531  const short int e1 = f2e_ids[1];
532  const short int tmp = e2v_ids[2*e1];
533 
534  *v0 = e2v_ids[2*e0];
535  *v1 = e2v_ids[2*e0+1];
536  *v2 = ((tmp != *v0) && (tmp != *v1)) ? tmp : e2v_ids[2*e1+1];
537 }
538 
539 /*----------------------------------------------------------------------------*/
548 /*----------------------------------------------------------------------------*/
549 
550 static inline bool
551 cs_cell_mesh_is_boundary_face(const cs_cell_mesh_t *cm,
552  const short int f)
553 {
554  if (cm->f_ids[f] - cm->bface_shift > -1)
555  return true;
556  else
557  return false;
558 }
559 
560 /*============================================================================
561  * Public function prototypes
562  *============================================================================*/
563 
564 /*----------------------------------------------------------------------------*/
571 /*----------------------------------------------------------------------------*/
572 
573 void
575 
576 /*----------------------------------------------------------------------------*/
581 /*----------------------------------------------------------------------------*/
582 
583 void
585 
586 /*----------------------------------------------------------------------------*/
598 /*----------------------------------------------------------------------------*/
599 
601 cs_cell_sys_create(int n_max_dofbyc,
602  int n_max_fbyc,
603  int n_blocks,
604  int *block_sizes);
605 
606 /*----------------------------------------------------------------------------*/
614 /*----------------------------------------------------------------------------*/
615 
616 void
617 cs_cell_sys_reset(int n_fbyc,
618  cs_cell_sys_t *csys);
619 
620 /*----------------------------------------------------------------------------*/
626 /*----------------------------------------------------------------------------*/
627 
628 void
630 
631 /*----------------------------------------------------------------------------*/
638 /*----------------------------------------------------------------------------*/
639 
640 void
641 cs_cell_sys_dump(const char msg[],
642  const cs_cell_sys_t *csys);
643 
644 /*----------------------------------------------------------------------------*/
650 /*----------------------------------------------------------------------------*/
651 
654 
655 /*----------------------------------------------------------------------------*/
661 /*----------------------------------------------------------------------------*/
662 
663 void
665 
666 /*----------------------------------------------------------------------------*/
674 /*----------------------------------------------------------------------------*/
675 
677 cs_cell_mesh_create(const cs_cdo_connect_t *connect);
678 
679 /*----------------------------------------------------------------------------*/
687 /*----------------------------------------------------------------------------*/
688 
690 cs_cdo_local_get_cell_mesh(int mesh_id);
691 
692 /*----------------------------------------------------------------------------*/
698 /*----------------------------------------------------------------------------*/
699 
700 void
702 
703 /*----------------------------------------------------------------------------*/
709 /*----------------------------------------------------------------------------*/
710 
711 void
713 
714 /*----------------------------------------------------------------------------*/
720 /*----------------------------------------------------------------------------*/
721 
722 void
724 
725 /*----------------------------------------------------------------------------*/
736 /*----------------------------------------------------------------------------*/
737 
738 void
740  cs_eflag_t build_flag,
741  const cs_cdo_connect_t *connect,
742  const cs_cdo_quantities_t *quant,
743  cs_cell_mesh_t *cm);
744 
745 /*----------------------------------------------------------------------------*/
753 /*----------------------------------------------------------------------------*/
754 
756 cs_face_mesh_create(short int n_max_vbyf);
757 
758 /*----------------------------------------------------------------------------*/
766 /*----------------------------------------------------------------------------*/
767 
769 cs_cdo_local_get_face_mesh(int mesh_id);
770 
771 /*----------------------------------------------------------------------------*/
777 /*----------------------------------------------------------------------------*/
778 
779 void
781 
782 /*----------------------------------------------------------------------------*/
792 /*----------------------------------------------------------------------------*/
793 
794 void
796  cs_lnum_t f_id,
797  const cs_cdo_connect_t *connect,
798  const cs_cdo_quantities_t *quant,
799  cs_face_mesh_t *fm);
800 
801 /*----------------------------------------------------------------------------*/
811 /*----------------------------------------------------------------------------*/
812 
813 void
815  short int f,
816  cs_face_mesh_t *fm);
817 
818 /*----------------------------------------------------------------------------*/
827 /*----------------------------------------------------------------------------*/
828 
830 cs_face_mesh_light_create(short int n_max_vbyf,
831  short int n_max_vbyc);
832 
833 /*----------------------------------------------------------------------------*/
842 /*----------------------------------------------------------------------------*/
843 
846 
847 /*----------------------------------------------------------------------------*/
853 /*----------------------------------------------------------------------------*/
854 
855 void
857 
858 /*----------------------------------------------------------------------------*/
867 /*----------------------------------------------------------------------------*/
868 
869 void
871  short int f,
873 
874 /*----------------------------------------------------------------------------*/
875 
877 
878 #endif /* __CS_CDO_LOCAL_H__ */
cs_lnum_t * e_ids
Definition: cs_cdo_local.h:293
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:1468
bool * dof_is_forced
Definition: cs_cdo_local.h:182
#define CS_FLAG_BOUNDARY_CELL_BY_EDGE
(= 4) boundary cell with at least one border edge
Definition: cs_flag.h:64
int cs_cdo_local_d_buffer_size
Definition: cs_cdo_local.c:84
void cs_cdo_local_initialize(const cs_cdo_connect_t *connect)
Allocate global structures used for build system with a cellwise or facewise process.
Definition: cs_cdo_local.c:126
bool has_dirichlet
Definition: cs_cdo_local.h:170
short int * e2f_ids
Definition: cs_cdo_local.h:257
double * tef
Definition: cs_cdo_local.h:254
bool has_sliding
Definition: cs_cdo_local.h:179
double vol_c
Definition: cs_cdo_local.h:215
void cs_cell_mesh_free(cs_cell_mesh_t **p_cm)
Free a cs_cell_mesh_t structure.
Definition: cs_cdo_local.c:867
cs_cell_builder_t * cs_cell_builder_create(void)
Allocate cs_cell_builder_t structure.
Definition: cs_cdo_local.c:500
cs_lnum_t * f_ids
Definition: cs_cdo_local.h:234
int cs_glob_n_threads
Definition: cs_defs.c:172
cs_lnum_t f_id
Definition: cs_cdo_local.h:278
cs_face_mesh_light_t * cs_face_mesh_light_create(short int n_max_vbyf, short int n_max_vbyc)
Allocate a cs_face_mesh_light_t structure.
Definition: cs_cdo_local.c:1845
double tpty_val
Definition: cs_cdo_local.h:108
cs_real_t t_bc_eval
Definition: cs_cdo_local.h:79
short int * v_ids
Definition: cs_cdo_local.h:318
double * wvc
Definition: cs_cdo_local.h:222
cs_sdm_t * loc
Definition: cs_cdo_local.h:132
short int n_max_vbyf
Definition: cs_cdo_local.h:272
cs_lnum_t * bf_ids
Definition: cs_cdo_local.h:167
double * tef
Definition: cs_cdo_local.h:295
double * source
Definition: cs_cdo_local.h:156
void cs_cell_sys_reset(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:365
bool has_internal_enforcement
Definition: cs_cdo_local.h:181
cs_real_t * pvol_e
Definition: cs_cdo_local.h:229
cs_lnum_t * dof_ids
Definition: cs_cdo_local.h:151
short int n_max_vbyc
Definition: cs_cdo_local.h:208
#define BEGIN_C_DECLS
Definition: cs_defs.h:510
double * rob_values
Definition: cs_cdo_local.h:177
double * dir_values
Definition: cs_cdo_local.h:171
short int * e2v_sgn
Definition: cs_cdo_local.h:244
double * tef
Definition: cs_cdo_local.h:324
cs_nvec3_t * dface
Definition: cs_cdo_local.h:228
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:186
double * val_n
Definition: cs_cdo_local.h:157
cs_lnum_t c_id
Definition: cs_cdo_local.h:313
double * hfc
Definition: cs_cdo_local.h:237
short int n_vf
Definition: cs_cdo_local.h:286
Set of local quantities and connectivities related to a mesh cell.
Definition: cs_cdo_local.h:202
void cs_cell_builder_free(cs_cell_builder_t **p_cb)
Free a cs_cell_builder_t structure.
Definition: cs_cdo_local.c:541
Definition: cs_cdo_connect.h:79
short int * f2e_ids
Definition: cs_cdo_local.h:252
cs_sdm_t * mat
Definition: cs_cdo_local.h:154
cs_flag_t * dof_flag
Definition: cs_cdo_local.h:152
cs_lnum_t * v_ids
Definition: cs_cdo_local.h:287
double * xv
Definition: cs_cdo_local.h:221
short int n_ef
Definition: cs_cdo_local.h:292
cs_face_mesh_light_t * cs_cdo_local_get_face_mesh_light(int mesh_id)
Get a pointer to a cs_face_mesh_light_t structure corresponding to mesh id.
Definition: cs_cdo_local.c:1883
cs_nvec3_t * sefc
Definition: cs_cdo_local.h:258
double cs_real_t
Floating-point value.
Definition: cs_defs.h:322
Definition: cs_cdo_quantities.h:129
cs_nvec3_t dedge
Definition: cs_cdo_local.h:281
Definition: cs_defs.h:368
Set of arrays and local (small) dense matrices related to a mesh cell This is a key structure for bui...
Definition: cs_cdo_local.h:146
short int n_max_ebyc
Definition: cs_cdo_local.h:209
cs_lnum_t * v_ids
Definition: cs_cdo_local.h:220
int n_dofs
Definition: cs_cdo_local.h:150
void cs_face_mesh_light_free(cs_face_mesh_light_t **p_fm)
Free a cs_face_mesh_light_t structure.
Definition: cs_cdo_local.c:1900
Definition: cs_cdo_local.h:308
short int * f_sgn
Definition: cs_cdo_local.h:235
short int * f2v_ids
Definition: cs_cdo_local.h:248
double * wvf
Definition: cs_cdo_local.h:289
double pvol
Definition: cs_cdo_local.h:282
double gpty_val
Definition: cs_cdo_local.h:107
double * rhs
Definition: cs_cdo_local.h:155
double * val_nm1
Definition: cs_cdo_local.h:158
double precision, dimension(:,:,:), allocatable v
Definition: atimbr.f90:114
double rpty_val
Definition: cs_cdo_local.h:110
cs_sdm_t * aux
Definition: cs_cdo_local.h:133
double diam_c
Definition: cs_cdo_local.h:216
Definition: cs_field_pointer.h:128
cs_lnum_t c_id
Definition: cs_cdo_local.h:148
fvm_element_t
Definition: fvm_defs.h:48
fvm_element_t type
Definition: cs_cdo_local.h:205
cs_lnum_t c_id
Definition: cs_cdo_local.h:213
void cs_face_mesh_light_build(const cs_cell_mesh_t *cm, short int f, cs_face_mesh_light_t *fm)
Define a cs_face_mesh_light_t structure starting from a cs_cell_mesh_t structure. ...
Definition: cs_cdo_local.c:1928
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:649
cs_eflag_t flag
Definition: cs_cdo_local.h:204
short int n_max_fbyc
Definition: cs_cdo_local.h:210
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:1717
cs_flag_t * bf_flag
Definition: cs_cdo_local.h:168
short int n_fc
Definition: cs_cdo_local.h:232
short int f_sgn
Definition: cs_cdo_local.h:279
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:1515
double hfc
Definition: cs_cdo_local.h:283
cs_lnum_t bface_shift
Definition: cs_cdo_local.h:233
cs_lnum_t * e_ids
Definition: cs_cdo_local.h:226
void cs_cell_mesh_build(cs_lnum_t c_id, cs_eflag_t build_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:923
cs_real_t t_pty_eval
Definition: cs_cdo_local.h:78
cs_real_t t_st_eval
Definition: cs_cdo_local.h:80
cs_nvec3_t * dedge
Definition: cs_cdo_local.h:239
short int n_vf
Definition: cs_cdo_local.h:317
cs_quant_t * edge
Definition: cs_cdo_local.h:294
double * f_diam
Definition: cs_cdo_local.h:236
cs_cell_mesh_t ** cs_cdo_local_cell_meshes
Definition: cs_cdo_local.c:88
short int * e2v_ids
Definition: cs_cdo_local.h:298
short int * f2v_idx
Definition: cs_cdo_local.h:247
double * neu_values
Definition: cs_cdo_local.h:174
Set of local and temporary buffers.
Definition: cs_cdo_local.h:60
int * ids
Definition: cs_cdo_local.h:128
cs_quant_t * face
Definition: cs_cdo_local.h:238
cs_face_mesh_light_t ** cs_cdo_local_face_meshes_light
Definition: cs_cdo_local.c:90
double ** cs_cdo_local_d_buffer
Definition: cs_cdo_local.c:85
cs_real_t cs_real_3_t[3]
vector of 3 floating-point values
Definition: cs_defs.h:335
bool has_robin
Definition: cs_cdo_local.h:176
cs_quant_t face
Definition: cs_cdo_local.h:280
short int * _f_ids
Definition: cs_cdo_local.h:166
void cs_cell_sys_free(cs_cell_sys_t **p_csys)
Free a cs_cell_sys_t structure.
Definition: cs_cdo_local.c:405
cs_real_3_t xc
Definition: cs_cdo_local.h:214
short int * e_ids
Definition: cs_cdo_local.h:323
#define CS_CDO_N_MAX_REACTIONS
Definition: cs_param_cdo.h:70
Definition: cs_cdo_quantities.h:121
cs_flag_t cell_flag
Definition: cs_cdo_local.h:82
int cs_lnum_t
local mesh entity id
Definition: cs_defs.h:316
short int n_vc
Definition: cs_cdo_local.h:219
#define CS_FLAG_BOUNDARY_CELL_BY_VERTEX
(= 2) boundary cell with at least one border vertex
Definition: cs_flag.h:63
cs_real_3_t xc
Definition: cs_cdo_local.h:275
short int f
Definition: cs_cdo_local.h:314
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:673
#define END_C_DECLS
Definition: cs_defs.h:511
short int * e2v_ids
Definition: cs_cdo_local.h:243
cs_cell_sys_t * cs_cell_sys_create(int n_max_dofbyc, int n_max_fbyc, int n_blocks, int *block_sizes)
Allocate a cs_cell_sys_t structure.
Definition: cs_cdo_local.c:237
unsigned short int cs_flag_t
Definition: cs_defs.h:324
short int n_bc_faces
Definition: cs_cdo_local.h:165
double * wvf
Definition: cs_cdo_local.h:319
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:571
short int n_ef
Definition: cs_cdo_local.h:322
double precision, dimension(ncharm), save e1
Definition: cpincl.f90:233
short int n_ec
Definition: cs_cdo_local.h:225
unsigned int cs_eflag_t
Definition: cs_flag.h:170
double * values
Definition: cs_cdo_local.h:129
Set of local quantities and connectivities related to a mesh face Structure used to get a better memo...
Definition: cs_cdo_local.h:270
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:1565
cs_real_3_t * vectors
Definition: cs_cdo_local.h:130
short int * f2e_idx
Definition: cs_cdo_local.h:251
short int n_max_vbyf
Definition: cs_cdo_local.h:310
cs_face_mesh_t ** cs_cdo_local_face_meshes
Definition: cs_cdo_local.c:89
void cs_cell_sys_dump(const char msg[], const cs_cell_sys_t *csys)
Dump a local system for debugging purpose.
Definition: cs_cdo_local.c:445
double * adv_fluxes
Definition: cs_cdo_local.h:112
short int * f2e_sgn
Definition: cs_cdo_local.h:253
cs_real_t * pvol_f
Definition: cs_cdo_local.h:240
cs_lnum_t c_id
Definition: cs_cdo_local.h:274
void cs_cell_mesh_dump(const cs_cell_mesh_t *cm)
Dump a cs_cell_mesh_t structure.
Definition: cs_cdo_local.c:749
double * xv
Definition: cs_cdo_local.h:288
cs_quant_t * edge
Definition: cs_cdo_local.h:227
void cs_face_mesh_free(cs_face_mesh_t **p_fm)
Free a cs_face_mesh_t structure.
Definition: cs_cdo_local.c:1532
bool has_nhmg_neumann
Definition: cs_cdo_local.h:173
#define CS_FLAG_BOUNDARY_CELL_BY_FACE
(= 1) boundary cell with at least one border face
Definition: cs_flag.h:62