6.3
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  * 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-2020 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 
69 typedef struct {
70 
75 
76  /* Store the cellwise value for the grad-div, the time and reaction properties
77  * since the associated Hodge operator is linked to the unity as related
78  * property */
79 
80  double gpty_val;
81  double tpty_val;
84  double rpty_vals[CS_CDO_N_MAX_REACTIONS];
85  double rpty_val;
87  /* Advection-related values */
88  double *adv_fluxes;
89 
90  /* Temporary buffers (erase and updated several times during the system
91  build */
92  int *ids;
93  double *values;
96  /* Structures used to build specific terms composing the algebraic system */
97  cs_sdm_t *loc;
98  cs_sdm_t *aux;
101 
107 typedef struct {
108 
111  int n_dofs;
115  cs_sdm_t *mat;
116  double *rhs;
117  double *source;
118  double *val_n;
119  double *val_nm1;
121  /* Boundary conditions for the local system */
122  short int n_bc_faces;
123  short int *_f_ids;
127  /* Dirichlet BCs */
129  double *dir_values;
131  /* Neumann BCs */
133  double *neu_values;
135  /* Robin BCs */
136  bool has_robin;
137  double *rob_values;
139  /* Sliding BCs */
140  bool has_sliding;
142  /* Internal enforcement of DoFs */
146 } cs_cell_sys_t;
147 
159 typedef struct {
160 
164  /* Sizes used to allocate buffers */
165  short int n_max_vbyc;
166  short int n_max_ebyc;
167  short int n_max_fbyc;
168 
169  /* Cell information */
172  double vol_c;
173  double diam_c;
175  /* Vertex information */
176  short int n_vc;
178  double *xv;
179  double *wvc;
181  /* Edge information */
182  short int n_ec;
188  /* Face information */
189  short int n_fc;
192  short int *f_sgn;
193  double *f_diam;
194  double *hfc;
199  /* Local e2v connectivity: size 2*n_ec (allocated to 2*n_max_ebyc) */
200  short int *e2v_ids;
201  short int *e2v_sgn;
203  /* Local f2v connectivity: size = 2*n_max_ebyc */
204  short int *f2v_idx;
205  short int *f2v_ids;
207  /* Local f2e connectivity: size = 2*n_max_ebyc */
208  short int *f2e_idx;
209  short int *f2e_ids;
210  short int *f2e_sgn;
211  double *tef;
213  /* Local e2f connectivity: size 2*n_ec (allocated to 2*n_max_ebyc) */
214  short int *e2f_ids;
218 
227 typedef struct {
228 
229  short int n_max_vbyf;
234  /* Face information */
236  short int f_sgn;
239  double pvol;
240  double hfc;
242  /* Vertex information */
243  short int n_vf;
245  double *xv;
246  double *wvf;
248  /* Edge information */
249  short int n_ef;
252  double *tef;
254  /* Local e2v connectivity: size 2*n_ec (allocated to 2*n_max_ebyf) */
255  short int *e2v_ids;
258 
259 /*
260  A cs_face_mesh_light_t structure is close to a cs_face_mesh_t structure
261  There are less members to be buildt quicker.
262  Such structure is always associated to a cs_cell_mesh_t structure
263 */
264 
265 typedef struct {
266 
267  short int n_max_vbyf; /* Max number of vertices belonging to a face
268  (= n_max_ebyf) */
269 
270  cs_lnum_t c_id; /* id of related cell in the mesh numbering */
271  short int f; /* id of the face in the cell mesh numbering */
272 
273  /* Vertex information */
274  short int n_vf; /* local number of vertices on this face */
275  short int *v_ids; /* vertex ids in the cellwise numbering */
276  double *wvf; /* weights related to each vertex */
277 
278  /* Edge information */
279  short int n_ef; /* local number of edges on this face (= n_vf) */
280  short int *e_ids; /* edge ids in the cellwise numbering */
281  double *tef; /* area of the triangle of base e and apex xf */
282 
284 
285 /*============================================================================
286  * Global variables
287  *============================================================================*/
288 
289 /* Auxiliary buffers for extra-operations related to local problems. These
290  * buffers are also used for computing quantities related to a cs_cell_mesh_t
291  * (there are as many buffers as threads since a call to these buffers can be
292  * inside an OpenMP directive */
293 extern int cs_cdo_local_d_buffer_size;
294 extern double **cs_cdo_local_d_buffer;
295 
296 /* Pointer of pointers to global structures */
300 
301 /*============================================================================
302  * Static inline function prototypes
303  *============================================================================*/
304 
305 /*----------------------------------------------------------------------------*/
311 /*----------------------------------------------------------------------------*/
312 
313 static inline int
314 cs_cdo_local_get_d_buffer_size(void)
315 {
317 }
318 
319 /*----------------------------------------------------------------------------*/
328 /*----------------------------------------------------------------------------*/
329 
330 static inline double *
331 cs_cdo_local_get_d_buffer(int thr_id)
332 {
333  assert(thr_id > -1 && thr_id < cs_glob_n_threads);
334  return cs_cdo_local_d_buffer[thr_id];
335 }
336 
337 /*----------------------------------------------------------------------------*/
345 /*----------------------------------------------------------------------------*/
346 
347 static inline bool
348 cs_cell_has_boundary_elements(const cs_cell_builder_t *const cb)
349 {
353  return true;
354  else
355  return false;
356 }
357 
358 /*----------------------------------------------------------------------------*/
368 /*----------------------------------------------------------------------------*/
369 
370 static inline short int
371 cs_cell_mesh_get_v(const cs_lnum_t v_id,
372  const cs_cell_mesh_t *const cm)
373 {
374  if (cm == NULL)
375  return -1;
376  for (short int v = 0; v < cm->n_vc; v++)
377  if (cm->v_ids[v] == v_id)
378  return v;
379  return -1;
380 }
381 
382 /*----------------------------------------------------------------------------*/
392 /*----------------------------------------------------------------------------*/
393 
394 static inline short int
395 cs_cell_mesh_get_e(const cs_lnum_t e_id,
396  const cs_cell_mesh_t *const cm)
397 {
398  if (cm == NULL)
399  return -1;
400  for (short int e = 0; e < cm->n_ec; e++)
401  if (cm->e_ids[e] == e_id)
402  return e;
403  return -1;
404 }
405 
406 /*----------------------------------------------------------------------------*/
416 /*----------------------------------------------------------------------------*/
417 
418 static inline short int
419 cs_cell_mesh_get_f(const cs_lnum_t f_id,
420  const cs_cell_mesh_t *const cm)
421 {
422  if (cm == NULL)
423  return -1;
424  for (short int f = 0; f < cm->n_fc; f++)
425  if (cm->f_ids[f] == f_id)
426  return f;
427  return -1;
428 }
429 
430 /*----------------------------------------------------------------------------*/
439 /*----------------------------------------------------------------------------*/
440 
441 static inline void
442 cs_cell_mesh_get_f2v(short int f,
443  const cs_cell_mesh_t *cm,
444  short int *n_vf,
445  short int *v_ids)
446 {
447  /* Reset */
448  *n_vf = 0;
449  for (short int v = 0; v < cm->n_vc; v++) v_ids[v] = -1;
450 
451  /* Tag vertices belonging to the current face f */
452  for (short int i = cm->f2e_idx[f]; i < cm->f2e_idx[f+1]; i++) {
453 
454  const int shift_e = 2*cm->f2e_ids[i];
455  v_ids[cm->e2v_ids[shift_e]] = 1;
456  v_ids[cm->e2v_ids[shift_e+1]] = 1;
457 
458  } /* Loop on face edges */
459 
460  for (short int v = 0; v < cm->n_vc; v++) {
461  if (v_ids[v] > 0)
462  v_ids[*n_vf] = v, *n_vf += 1;
463  }
464 
465 }
466 
467 /*----------------------------------------------------------------------------*/
478 /*----------------------------------------------------------------------------*/
479 
480 static inline void
481 cs_cell_mesh_get_next_3_vertices(const short int *f2e_ids,
482  const short int *e2v_ids,
483  short int *v0,
484  short int *v1,
485  short int *v2)
486 {
487  const short int e0 = f2e_ids[0];
488  const short int e1 = f2e_ids[1];
489  const short int tmp = e2v_ids[2*e1];
490 
491  *v0 = e2v_ids[2*e0];
492  *v1 = e2v_ids[2*e0+1];
493  *v2 = ((tmp != *v0) && (tmp != *v1)) ? tmp : e2v_ids[2*e1+1];
494 }
495 
496 /*----------------------------------------------------------------------------*/
505 /*----------------------------------------------------------------------------*/
506 
507 static inline bool
508 cs_cell_mesh_is_boundary_face(const cs_cell_mesh_t *cm,
509  const short int f)
510 {
511  if (cm->f_ids[f] - cm->bface_shift > -1)
512  return true;
513  else
514  return false;
515 }
516 
517 /*============================================================================
518  * Public function prototypes
519  *============================================================================*/
520 
521 /*----------------------------------------------------------------------------*/
528 /*----------------------------------------------------------------------------*/
529 
530 void
532 
533 /*----------------------------------------------------------------------------*/
538 /*----------------------------------------------------------------------------*/
539 
540 void
542 
543 /*----------------------------------------------------------------------------*/
555 /*----------------------------------------------------------------------------*/
556 
558 cs_cell_sys_create(int n_max_dofbyc,
559  int n_max_fbyc,
560  int n_blocks,
561  int *block_sizes);
562 
563 /*----------------------------------------------------------------------------*/
571 /*----------------------------------------------------------------------------*/
572 
573 void
574 cs_cell_sys_reset(int n_fbyc,
575  cs_cell_sys_t *csys);
576 
577 /*----------------------------------------------------------------------------*/
583 /*----------------------------------------------------------------------------*/
584 
585 void
587 
588 /*----------------------------------------------------------------------------*/
595 /*----------------------------------------------------------------------------*/
596 
597 void
598 cs_cell_sys_dump(const char msg[],
599  const cs_cell_sys_t *csys);
600 
601 /*----------------------------------------------------------------------------*/
607 /*----------------------------------------------------------------------------*/
608 
611 
612 /*----------------------------------------------------------------------------*/
618 /*----------------------------------------------------------------------------*/
619 
620 void
622 
623 /*----------------------------------------------------------------------------*/
631 /*----------------------------------------------------------------------------*/
632 
634 cs_cell_mesh_create(const cs_cdo_connect_t *connect);
635 
636 /*----------------------------------------------------------------------------*/
644 /*----------------------------------------------------------------------------*/
645 
647 cs_cdo_local_get_cell_mesh(int mesh_id);
648 
649 /*----------------------------------------------------------------------------*/
655 /*----------------------------------------------------------------------------*/
656 
657 void
659 
660 /*----------------------------------------------------------------------------*/
666 /*----------------------------------------------------------------------------*/
667 
668 void
670 
671 /*----------------------------------------------------------------------------*/
677 /*----------------------------------------------------------------------------*/
678 
679 void
681 
682 /*----------------------------------------------------------------------------*/
693 /*----------------------------------------------------------------------------*/
694 
695 void
697  cs_eflag_t build_flag,
698  const cs_cdo_connect_t *connect,
699  const cs_cdo_quantities_t *quant,
700  cs_cell_mesh_t *cm);
701 
702 /*----------------------------------------------------------------------------*/
710 /*----------------------------------------------------------------------------*/
711 
713 cs_face_mesh_create(short int n_max_vbyf);
714 
715 /*----------------------------------------------------------------------------*/
723 /*----------------------------------------------------------------------------*/
724 
726 cs_cdo_local_get_face_mesh(int mesh_id);
727 
728 /*----------------------------------------------------------------------------*/
734 /*----------------------------------------------------------------------------*/
735 
736 void
738 
739 /*----------------------------------------------------------------------------*/
749 /*----------------------------------------------------------------------------*/
750 
751 void
753  cs_lnum_t f_id,
754  const cs_cdo_connect_t *connect,
755  const cs_cdo_quantities_t *quant,
756  cs_face_mesh_t *fm);
757 
758 /*----------------------------------------------------------------------------*/
768 /*----------------------------------------------------------------------------*/
769 
770 void
772  short int f,
773  cs_face_mesh_t *fm);
774 
775 /*----------------------------------------------------------------------------*/
784 /*----------------------------------------------------------------------------*/
785 
787 cs_face_mesh_light_create(short int n_max_vbyf,
788  short int n_max_vbyc);
789 
790 /*----------------------------------------------------------------------------*/
799 /*----------------------------------------------------------------------------*/
800 
803 
804 /*----------------------------------------------------------------------------*/
810 /*----------------------------------------------------------------------------*/
811 
812 void
814 
815 /*----------------------------------------------------------------------------*/
824 /*----------------------------------------------------------------------------*/
825 
826 void
828  short int f,
830 
831 /*----------------------------------------------------------------------------*/
832 
834 
835 #endif /* __CS_CDO_LOCAL_H__ */
cs_face_mesh_t::pvol
double pvol
Definition: cs_cdo_local.h:239
cs_cell_mesh_t::wvc
double * wvc
Definition: cs_cdo_local.h:179
cs_cell_sys_t::_f_ids
short int * _f_ids
Definition: cs_cdo_local.h:123
cs_face_mesh_t::e2v_ids
short int * e2v_ids
Definition: cs_cdo_local.h:255
cs_cell_mesh_t::e2v_ids
short int * e2v_ids
Definition: cs_cdo_local.h:200
cs_cell_mesh_dump
void cs_cell_mesh_dump(const cs_cell_mesh_t *cm)
Dump a cs_cell_mesh_t structure.
Definition: cs_cdo_local.c:747
cs_face_mesh_light_build
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:1881
cs_cell_builder_t::t_bc_eval
cs_real_t t_bc_eval
Definition: cs_cdo_local.h:72
cs_face_mesh_t::edge
cs_quant_t * edge
Definition: cs_cdo_local.h:251
cs_cell_builder_t::ids
int * ids
Definition: cs_cdo_local.h:92
cs_cell_sys_dump
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:458
cs_cell_sys_free
void cs_cell_sys_free(cs_cell_sys_t **p_csys)
Free a cs_cell_sys_t structure.
Definition: cs_cdo_local.c:418
cs_face_mesh_light_t::n_vf
short int n_vf
Definition: cs_cdo_local.h:274
fm
@ fm
Definition: cs_field_pointer.h:134
cs_cell_sys_t::neu_values
double * neu_values
Definition: cs_cdo_local.h:133
cs_face_mesh_t::xv
double * xv
Definition: cs_cdo_local.h:245
cs_cell_sys_t::rob_values
double * rob_values
Definition: cs_cdo_local.h:137
cs_cell_builder_t::vectors
cs_real_3_t * vectors
Definition: cs_cdo_local.h:94
cs_face_mesh_t::n_ef
short int n_ef
Definition: cs_cdo_local.h:249
cs_cell_sys_t::dof_flag
cs_flag_t * dof_flag
Definition: cs_cdo_local.h:113
cs_real_3_t
cs_real_t cs_real_3_t[3]
vector of 3 floating-point values
Definition: cs_defs.h:317
cs_cell_builder_t::tpty_val
double tpty_val
Definition: cs_cdo_local.h:81
cs_face_mesh_light_t::wvf
double * wvf
Definition: cs_cdo_local.h:276
CS_FLAG_BOUNDARY_CELL_BY_VERTEX
#define CS_FLAG_BOUNDARY_CELL_BY_VERTEX
(= 2) boundary cell with at least one border vertex
Definition: cs_flag.h:63
cs_cell_mesh_t::edge
cs_quant_t * edge
Definition: cs_cdo_local.h:184
cs_cell_mesh_t::dface
cs_nvec3_t * dface
Definition: cs_cdo_local.h:185
cs_cell_sys_t::dir_values
double * dir_values
Definition: cs_cdo_local.h:129
cs_face_mesh_t
Set of local quantities and connectivities related to a mesh face Structure used to get a better memo...
Definition: cs_cdo_local.h:227
cs_face_mesh_t::face
cs_quant_t face
Definition: cs_cdo_local.h:237
END_C_DECLS
#define END_C_DECLS
Definition: cs_defs.h:493
cs_cell_builder_t::loc
cs_sdm_t * loc
Definition: cs_cdo_local.h:97
cs_cell_mesh_t::c_id
cs_lnum_t c_id
Definition: cs_cdo_local.h:170
cs_cell_sys_t::dof_ids
cs_lnum_t * dof_ids
Definition: cs_cdo_local.h:112
cs_face_mesh_t::wvf
double * wvf
Definition: cs_cdo_local.h:246
cs_cell_mesh_t::pvol_e
cs_real_t * pvol_e
Definition: cs_cdo_local.h:186
atimbr::v
double precision, dimension(:,:,:), allocatable v
Definition: atimbr.f90:114
cs_cell_mesh_reset
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:676
cs_real_t
double cs_real_t
Floating-point value.
Definition: cs_defs.h:304
cs_cell_mesh_t::n_vc
short int n_vc
Definition: cs_cdo_local.h:176
cs_cell_builder_t::values
double * values
Definition: cs_cdo_local.h:93
cs_cell_sys_reset
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:362
BEGIN_C_DECLS
#define BEGIN_C_DECLS
Definition: cs_defs.h:492
cs_cell_mesh_t::e2v_sgn
short int * e2v_sgn
Definition: cs_cdo_local.h:201
cs_face_mesh_t::tef
double * tef
Definition: cs_cdo_local.h:252
cs_face_mesh_light_t::e_ids
short int * e_ids
Definition: cs_cdo_local.h:280
cs_cell_sys_t::has_dirichlet
bool has_dirichlet
Definition: cs_cdo_local.h:128
cs_cell_mesh_build
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:919
cs_cell_mesh_t::n_ec
short int n_ec
Definition: cs_cdo_local.h:182
cs_cdo_quantities.h
cs_cell_sys_t::has_nhmg_neumann
bool has_nhmg_neumann
Definition: cs_cdo_local.h:132
cs_face_mesh_t::f_sgn
short int f_sgn
Definition: cs_cdo_local.h:236
cs_cell_mesh_t::n_max_fbyc
short int n_max_fbyc
Definition: cs_cdo_local.h:167
cs_cdo_local_get_cell_mesh
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:652
cs_cell_mesh_t::xc
cs_real_3_t xc
Definition: cs_cdo_local.h:171
cs_face_mesh_free
void cs_face_mesh_free(cs_face_mesh_t **p_fm)
Free a cs_face_mesh_t structure.
Definition: cs_cdo_local.c:1498
cs_cell_mesh_t::v_ids
cs_lnum_t * v_ids
Definition: cs_cdo_local.h:177
cs_cell_mesh_t::f2v_ids
short int * f2v_ids
Definition: cs_cdo_local.h:205
cs_sdm.h
CS_FLAG_BOUNDARY_CELL_BY_EDGE
#define CS_FLAG_BOUNDARY_CELL_BY_EDGE
(= 4) boundary cell with at least one border edge
Definition: cs_flag.h:64
cs_face_mesh_light_t
Definition: cs_cdo_local.h:265
cs_face_mesh_light_t::n_max_vbyf
short int n_max_vbyf
Definition: cs_cdo_local.h:267
cs_face_mesh_t::e_ids
cs_lnum_t * e_ids
Definition: cs_cdo_local.h:250
CS_CDO_N_MAX_REACTIONS
#define CS_CDO_N_MAX_REACTIONS
Definition: cs_param_cdo.h:69
cs_param_cdo.h
cs_cell_sys_t::has_robin
bool has_robin
Definition: cs_cdo_local.h:136
cs_cell_sys_t::bf_flag
cs_flag_t * bf_flag
Definition: cs_cdo_local.h:125
cs_cell_mesh_t::f2e_sgn
short int * f2e_sgn
Definition: cs_cdo_local.h:210
cs_face_mesh_create
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:1437
cs_cell_mesh_t::type
fvm_element_t type
Definition: cs_cdo_local.h:162
cs_cell_mesh_t::hfc
double * hfc
Definition: cs_cdo_local.h:194
cs_cell_sys_t::n_bc_faces
short int n_bc_faces
Definition: cs_cdo_local.h:122
cs_cell_mesh_t::diam_c
double diam_c
Definition: cs_cdo_local.h:173
fvm_element_t
fvm_element_t
Definition: fvm_defs.h:48
cs_cdo_local_d_buffer
double ** cs_cdo_local_d_buffer
Definition: cs_cdo_local.c:86
cs_cell_mesh_t::f2v_idx
short int * f2v_idx
Definition: cs_cdo_local.h:204
cs_cell_mesh_t::f2e_idx
short int * f2e_idx
Definition: cs_cdo_local.h:208
cs_cell_mesh_t::dedge
cs_nvec3_t * dedge
Definition: cs_cdo_local.h:196
CS_FLAG_BOUNDARY_CELL_BY_FACE
#define CS_FLAG_BOUNDARY_CELL_BY_FACE
(= 1) boundary cell with at least one border face
Definition: cs_flag.h:62
cs_face_mesh_t::n_vf
short int n_vf
Definition: cs_cdo_local.h:243
cs_cell_sys_t::n_dofs
int n_dofs
Definition: cs_cdo_local.h:111
cs_face_mesh_light_t::f
short int f
Definition: cs_cdo_local.h:271
cs_face_mesh_light_t::v_ids
short int * v_ids
Definition: cs_cdo_local.h:275
cs_cell_builder_t::t_pty_eval
cs_real_t t_pty_eval
Definition: cs_cdo_local.h:71
cs_cell_mesh_free
void cs_cell_mesh_free(cs_cell_mesh_t **p_cm)
Free a cs_cell_mesh_t structure.
Definition: cs_cdo_local.c:863
cs_cdo_quantities_t
Definition: cs_cdo_quantities.h:124
cs_face_mesh_t::dedge
cs_nvec3_t dedge
Definition: cs_cdo_local.h:238
cs_cell_builder_t::cell_flag
cs_flag_t cell_flag
Definition: cs_cdo_local.h:74
cs_cell_sys_t::has_internal_enforcement
bool has_internal_enforcement
Definition: cs_cdo_local.h:143
cs_cdo_local_cell_meshes
cs_cell_mesh_t ** cs_cdo_local_cell_meshes
Definition: cs_cdo_local.c:89
cs_face_mesh_t::f_id
cs_lnum_t f_id
Definition: cs_cdo_local.h:235
cs_face_mesh_light_t::n_ef
short int n_ef
Definition: cs_cdo_local.h:279
cs_cell_sys_t::mat
cs_sdm_t * mat
Definition: cs_cdo_local.h:115
cs_lnum_t
int cs_lnum_t
local mesh entity id
Definition: cs_defs.h:298
cs_cell_mesh_t::tef
double * tef
Definition: cs_cdo_local.h:211
cs_cell_mesh_t::n_max_vbyc
short int n_max_vbyc
Definition: cs_cdo_local.h:165
cs_cdo_connect_t
Definition: cs_cdo_connect.h:76
cs_glob_n_threads
int cs_glob_n_threads
Definition: cs_defs.c:172
cs_cdo_local_initialize
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:127
cs_cell_sys_t::source
double * source
Definition: cs_cdo_local.h:117
cs_cell_builder_free
void cs_cell_builder_free(cs_cell_builder_t **p_cb)
Free a cs_cell_builder_t structure.
Definition: cs_cdo_local.c:552
cs_cell_builder_t
Set of local and temporary buffers useful for building the algebraic system with a cellwise process....
Definition: cs_cdo_local.h:69
cs_flag.h
cs_face_mesh_light_t::c_id
cs_lnum_t c_id
Definition: cs_cdo_local.h:270
cs_cell_builder_t::adv_fluxes
double * adv_fluxes
Definition: cs_cdo_local.h:88
cs_cell_mesh_t::n_fc
short int n_fc
Definition: cs_cdo_local.h:189
cs_face_mesh_t::v_ids
cs_lnum_t * v_ids
Definition: cs_cdo_local.h:244
cs_cell_sys_create
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:238
cs_cdo_local_face_meshes_light
cs_face_mesh_light_t ** cs_cdo_local_face_meshes_light
Definition: cs_cdo_local.c:91
cs_cell_mesh_create
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:582
cs_cdo_connect.h
cs_cell_sys_t::bf_ids
cs_lnum_t * bf_ids
Definition: cs_cdo_local.h:124
cs_cell_mesh_t::face
cs_quant_t * face
Definition: cs_cdo_local.h:195
cs_cell_builder_t::gpty_val
double gpty_val
Definition: cs_cdo_local.h:80
cs_cell_mesh_t::pvol_f
cs_real_t * pvol_f
Definition: cs_cdo_local.h:197
cs_cell_sys_t::has_sliding
bool has_sliding
Definition: cs_cdo_local.h:140
cs_cell_builder_t::rpty_val
double rpty_val
Definition: cs_cdo_local.h:85
cs_cell_mesh_t::xv
double * xv
Definition: cs_cdo_local.h:178
cs_cell_builder_t::aux
cs_sdm_t * aux
Definition: cs_cdo_local.h:98
cs_face_mesh_t::c_id
cs_lnum_t c_id
Definition: cs_cdo_local.h:231
cs_cell_sys_t::val_n
double * val_n
Definition: cs_cdo_local.h:118
cs_cdo_local_face_meshes
cs_face_mesh_t ** cs_cdo_local_face_meshes
Definition: cs_cdo_local.c:90
cs_cdo_local_finalize
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:187
cs_cell_mesh_t::f_sgn
short int * f_sgn
Definition: cs_cdo_local.h:192
cs_cell_builder_t::t_st_eval
cs_real_t t_st_eval
Definition: cs_cdo_local.h:73
cs_cell_mesh_t::bface_shift
cs_lnum_t bface_shift
Definition: cs_cdo_local.h:190
cs_cell_sys_t::intern_forced_ids
cs_lnum_t * intern_forced_ids
Definition: cs_cdo_local.h:144
cs_flag_t
unsigned short int cs_flag_t
Definition: cs_defs.h:306
cs_face_mesh_t::n_max_vbyf
short int n_max_vbyf
Definition: cs_cdo_local.h:229
cs_cell_mesh_t::e2f_ids
short int * e2f_ids
Definition: cs_cdo_local.h:214
cs_quant_t
Definition: cs_cdo_quantities.h:116
cs_cell_mesh_t::f2e_ids
short int * f2e_ids
Definition: cs_cdo_local.h:209
cs_cell_mesh_t::f_ids
cs_lnum_t * f_ids
Definition: cs_cdo_local.h:191
cs_cdo_local_get_face_mesh_light
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:1836
cs_cell_mesh_t::e_ids
cs_lnum_t * e_ids
Definition: cs_cdo_local.h:183
cs_cell_mesh_t::sefc
cs_nvec3_t * sefc
Definition: cs_cdo_local.h:215
cpincl::e1
double precision, dimension(ncharm), save e1
Definition: cpincl.f90:233
cs_cell_sys_t
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:107
cs_nvec3_t
Definition: cs_defs.h:350
cs_face_mesh_light_t::tef
double * tef
Definition: cs_cdo_local.h:281
cs_face_mesh_build
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:1531
cs_cell_sys_t::c_id
cs_lnum_t c_id
Definition: cs_cdo_local.h:109
cs_cell_mesh_t::n_max_ebyc
short int n_max_ebyc
Definition: cs_cdo_local.h:166
cs_cell_mesh_t::vol_c
double vol_c
Definition: cs_cdo_local.h:172
cs_cell_mesh_t
Set of local quantities and connectivities related to a mesh cell This is a key structure for all cel...
Definition: cs_cdo_local.h:159
cs_face_mesh_light_create
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:1800
cs_cell_sys_t::val_nm1
double * val_nm1
Definition: cs_cdo_local.h:119
cs_face_mesh_t::xc
cs_real_3_t xc
Definition: cs_cdo_local.h:232
cs_cdo_local_get_face_mesh
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:1481
cs_cell_builder_create
cs_cell_builder_t * cs_cell_builder_create(void)
Allocate cs_cell_builder_t structure.
Definition: cs_cdo_local.c:513
cs_cell_mesh_t::flag
cs_eflag_t flag
Definition: cs_cdo_local.h:161
cs_face_mesh_t::hfc
double hfc
Definition: cs_cdo_local.h:240
cs_cell_sys_t::rhs
double * rhs
Definition: cs_cdo_local.h:116
cs_cdo_local_d_buffer_size
int cs_cdo_local_d_buffer_size
Definition: cs_cdo_local.c:85
cs_cell_mesh_t::f_diam
double * f_diam
Definition: cs_cdo_local.h:193
cs_face_mesh_build_from_cell_mesh
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....
Definition: cs_cdo_local.c:1677
cs_face_mesh_light_free
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:1853
cs_eflag_t
unsigned int cs_eflag_t
Definition: cs_flag.h:166