1 #ifndef __CS_CDO_LOCAL_H__ 2 #define __CS_CDO_LOCAL_H__ 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 271 short int *block_sizes);
450 for (
short int v = 0;
v < cm->
n_vc;
v++) v_ids[
v] = -1;
453 for (
short int i = cm->
f2e_idx[f]; i < cm->f2e_idx[f+1]; i++) {
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;
461 for (
short int v = 0;
v < cm->
n_vc;
v++) {
463 v_ids[*n_vf] =
v, *n_vf += 1;
543 const short int *e2v_ids,
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];
553 *v1 = e2v_ids[2*e0+1];
554 *v2 = ((tmp != *v0) && (tmp != *v1)) ? tmp : e2v_ids[2*e1+1];
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