1#ifndef CS_CDO_QUANTITIES_H
2#define CS_CDO_QUANTITIES_H
280 return (f_id < this->
n_i_faces) ? this->i_face_surf[f_id]
281 : this->b_face_surf[f_id - this->
n_i_faces];
297 assert(bf_id >= 0 && bf_id < this->
n_b_faces);
298 return this->b_face_surf[bf_id];
314 assert(bf_id >= 0 && bf_id < this->
n_b_faces);
315 return this->b_face_u_normal[bf_id];
334 return this->i_face_normal + 3 * f_id;
336 return this->b_face_normal + 3 * (f_id - this->
n_i_faces);
354 return this->i_face_center[f_id];
356 return this->b_face_center[f_id - this->
n_i_faces];
486 const double xab[3] = {xb[0] - qa.
center[0],
489 const double cp[3] = {qa.
unitv[1]*xab[2] - qa.
unitv[2]*xab[1],
cs_cdo_quantities_bit_t
Bit values for setting which quantities to compute.
Definition: cs_cdo_quantities.h:103
@ CS_CDO_QUANTITIES_HHO_SCHEME
Definition: cs_cdo_quantities.h:109
@ CS_CDO_QUANTITIES_VB_SCHEME
Definition: cs_cdo_quantities.h:110
@ CS_CDO_QUANTITIES_CB_SCHEME
Definition: cs_cdo_quantities.h:112
@ CS_CDO_QUANTITIES_FB_SCHEME
Definition: cs_cdo_quantities.h:108
@ CS_CDO_QUANTITIES_MAC_SCHEME
Definition: cs_cdo_quantities.h:113
@ CS_CDO_QUANTITIES_VCB_SCHEME
Definition: cs_cdo_quantities.h:111
@ CS_CDO_QUANTITIES_EB_SCHEME
Definition: cs_cdo_quantities.h:107
const cs_real_t * cs_cdo_quantities_get_pvol_ec(const cs_cdo_quantities_t *cdoq, const cs_adjacency_t *c2e)
Retrieve the portion of volume surrounding each edge of a cell. This volume corresponds to an octahed...
Definition: cs_cdo_quantities.cpp:2186
void cs_cdo_quantities_set_algo_ccenter(cs_cdo_quantities_cell_center_algo_t algo)
Set the type of algorithm to use for computing the cell center.
Definition: cs_cdo_quantities.cpp:1500
const cs_real_t * cs_cdo_quantities_get_dual_volumes(cs_cdo_quantities_t *cdoq, const cs_cdo_connect_t *connect)
Compute or retrieve the dual volume surrounding each vertex. The parallel operation (sum reduction) i...
Definition: cs_cdo_quantities.cpp:2284
void cs_cdo_quantities_set(cs_flag_t option_flag)
Set which quantities have to be computed. Additionnal quantities are added to cs_cdo_quantities_flag ...
Definition: cs_cdo_quantities.cpp:1486
void cs_cdo_quantities_free_cell_vol(cs_cdo_quantities_t *cdoq)
Properly free the cell_vol array according to the settings.
Definition: cs_cdo_quantities.cpp:1927
const cs_real_t * cs_cdo_quantities_get_pvol_fc(const cs_cdo_quantities_t *cdoq, const cs_adjacency_t *c2f)
Retrieve the portion of volume surrounding each face of a cell. This volume corresponds to a pyramid ...
Definition: cs_cdo_quantities.cpp:2095
void cs_cdo_quantities_compute_b_wvf(const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *cdoq, cs_lnum_t bf_id, cs_real_t wvf[])
Compute the weight related to each vertex of a face. This weight ensures a 2nd order approximation if...
Definition: cs_cdo_quantities.cpp:2504
cs_cdo_quantities_t * cs_cdo_quantities_free(cs_cdo_quantities_t *cdoq)
Destroy a cs_cdo_quantities_t structure.
Definition: cs_cdo_quantities.cpp:1870
long long cs_cdo_quantities_get_time_perfo(void)
Retrieve the time elapsed to build the cs_cdo_quantities_t structure.
Definition: cs_cdo_quantities.cpp:1471
void cs_cdo_quantities_compute_dual_volumes(const cs_cdo_quantities_t *cdoq, const cs_cdo_connect_t *connect, cs_real_t **p_dual_vol)
Compute the dual volume surrounding each vertex. The parallel operation (sum reduction) is performed ...
Definition: cs_cdo_quantities.cpp:2313
void cs_cdo_quantities_compute_pvol_fc(const cs_cdo_quantities_t *cdoq, const cs_adjacency_t *c2f, cs_real_t **p_pvol_fc)
Compute the portion of volume surrounding each face of a cell. This volume corresponds to a pyramid w...
Definition: cs_cdo_quantities.cpp:2125
cs_cdo_quantities_cell_center_algo_t
Type of algorithm used to compute the cell centers.
Definition: cs_cdo_quantities.h:69
@ CS_CDO_QUANTITIES_MEANV_CENTER
Definition: cs_cdo_quantities.h:71
@ CS_CDO_QUANTITIES_BARYC_CENTER
Definition: cs_cdo_quantities.h:72
@ CS_CDO_QUANTITIES_SUBDIV_CENTER
Definition: cs_cdo_quantities.h:74
@ CS_CDO_QUANTITIES_SATURNE_CENTER
Definition: cs_cdo_quantities.h:73
void cs_cdo_quantities_compute_i_tef(const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *cdoq, cs_lnum_t f_id, cs_real_t tef[])
Compute the area of the triangles with basis each edge of the face and apex the face center....
Definition: cs_cdo_quantities.cpp:2368
void cs_cdo_quantities_compute_pvol_ec(const cs_cdo_quantities_t *cdoq, const cs_adjacency_t *c2e, cs_real_t **p_pvol_ec)
Compute the portion of volume surrounding each edge of a cell. The computed quantity is scanned with ...
Definition: cs_cdo_quantities.cpp:2219
void cs_quant_dump(FILE *f, cs_lnum_t num, const cs_quant_t q)
Dump a cs_quant_t structure.
Definition: cs_cdo_quantities.cpp:2700
cs_cdo_quantities_t * cs_cdo_quantities_build(const cs_mesh_t *m, const cs_mesh_quantities_t *mq, const cs_cdo_connect_t *topo)
Build a cs_cdo_quantities_t structure. Some quantities are shared with the cs_mesh_quantities_t struc...
Definition: cs_cdo_quantities.cpp:1520
void cs_cdo_quantities_compute_b_tef(const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *cdoq, cs_lnum_t bf_id, cs_real_t tef[])
Compute the area of the triangles with basis each edge of the face and apex the face center....
Definition: cs_cdo_quantities.cpp:2411
void cs_cdo_quantities_compute_i_wvf(const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *cdoq, cs_lnum_t f_id, cs_real_t wvf[])
Compute the weight related to each vertex of a face. This weight ensures a 2nd order approximation if...
Definition: cs_cdo_quantities.cpp:2454
static double cs_compute_area_from_quant(const cs_quant_t qa, const cs_real_t *xb)
Compute the area of the triangle of base given by q (related to a segment) with apex located at xa.
Definition: cs_cdo_quantities.h:483
double cs_real_t
Floating-point value.
Definition: cs_defs.h:332
cs_nreal_t cs_nreal_3_t[3]
Definition: cs_defs.h:375
cs_real_t cs_real_3_t[3]
vector of 3 floating-point values
Definition: cs_defs.h:349
unsigned cs_gnum_t
global mesh entity number
Definition: cs_defs.h:317
int cs_lnum_t
local mesh entity id
Definition: cs_defs.h:325
double cs_nreal_t
Definition: cs_defs.h:336
unsigned short int cs_flag_t
Definition: cs_defs.h:334
@ cp
Definition: cs_field_pointer.h:99
cs_flag_cartesian_axis_t
Definition: cs_flag.h:305
CS_F_HOST_DEVICE T cs_math_3_norm(const T v[3])
Compute the euclidean norm of a vector of dimension 3.
Definition: cs_math.h:240
char * algo
Definition: field_names.h:106
Definition: cs_mesh_adjacencies.h:68
Definition: cs_cdo_connect.h:57
Definition: cs_cdo_quantities.h:142
cs_nvec3_t get_dedge_nvec(cs_lnum_t shift) const
Get the two normalized vector associated to a dual edge.
Definition: cs_cdo_quantities.cpp:2680
cs_gnum_t n_g_edges
Definition: cs_cdo_quantities.h:224
cs_real_3_t * b_face_center
Definition: cs_cdo_quantities.h:194
cs_real_t get_face_surf(const cs_lnum_t f_id) const
Get the face surface for a primal face (interior or border)
Definition: cs_cdo_quantities.h:278
cs_real_3_t * cell_centers
Definition: cs_cdo_quantities.h:158
cs_real_t get_bface_surf(const cs_lnum_t bf_id) const
Get the face surface for a border primal face.
Definition: cs_cdo_quantities.h:295
cs_lnum_t n_i_faces
Definition: cs_cdo_quantities.h:167
cs_quant_t get_edge_center(cs_lnum_t e_id, const cs_cdo_connect_t *topo) const
Retrieve the edge center for a primal edge (interior or border)
Definition: cs_cdo_quantities.cpp:2632
const cs_real_t * b_dist
Definition: cs_cdo_quantities.h:195
cs_real_t * i_face_surf
Definition: cs_cdo_quantities.h:187
cs_real_3_t * i_face_center
Definition: cs_cdo_quantities.h:188
cs_lnum_t n_faces
Definition: cs_cdo_quantities.h:166
cs_lnum_t n_b_faces
Definition: cs_cdo_quantities.h:168
cs_quant_info_t edge_info
Definition: cs_cdo_quantities.h:244
cs_quant_t get_face(cs_lnum_t f_id) const
Get a cs_quant_t structure for a primal face (interior or border)
Definition: cs_cdo_quantities.cpp:2552
cs_real_t * dual_vol
Definition: cs_cdo_quantities.h:265
const cs_nreal_t * get_bface_normal(cs_lnum_t bf_id) const
Get the unit normal for a border primal face.
Definition: cs_cdo_quantities.h:312
cs_gnum_t n_g_vertices
Definition: cs_cdo_quantities.h:250
const cs_real_t * i_dist
Definition: cs_cdo_quantities.h:189
cs_real_t * b_face_surf
Definition: cs_cdo_quantities.h:193
cs_lnum_t n_cells
Definition: cs_cdo_quantities.h:156
cs_real_t * cell_vol
Definition: cs_cdo_quantities.h:159
cs_real_t * pvol_ec
Definition: cs_cdo_quantities.h:239
cs_quant_info_t face_info
Definition: cs_cdo_quantities.h:218
cs_nvec3_t get_edge_nvec(cs_lnum_t e_id) const
Get the normalized vector associated to a primal edge.
Definition: cs_cdo_quantities.cpp:2661
void check(int verb, const cs_mesh_quantities_t *mq, const cs_cdo_connect_t *topo) const
Check that global quantities are consistently computed.
Definition: cs_cdo_quantities.cpp:1702
void log_summary() const
Summarize generic information about the cdo mesh quantities.
Definition: cs_cdo_quantities.cpp:1945
cs_gnum_t n_g_cells
Definition: cs_cdo_quantities.h:157
cs_nvec3_t get_face_nvec(cs_lnum_t f_id) const
Get the face surface and its unit normal vector for a primal face (interior or border)
Definition: cs_cdo_quantities.cpp:2596
double vol_tot
Definition: cs_cdo_quantities.h:151
const cs_real_t * vtx_coord
Definition: cs_cdo_quantities.h:257
cs_lnum_t n_vertices
Definition: cs_cdo_quantities.h:249
cs_real_t * b_face_normal
Definition: cs_cdo_quantities.h:192
cs_gnum_t n_g_faces
Definition: cs_cdo_quantities.h:169
const cs_real_t * get_face_vector_area(cs_lnum_t f_id) const
Get the face vector which the face_area * face_normal for a primal face (interior or border)
Definition: cs_cdo_quantities.h:331
cs_nreal_3_t * i_face_u_normal
Definition: cs_cdo_quantities.h:185
cs_lnum_t n_edges
Definition: cs_cdo_quantities.h:223
cs_real_t * pvol_fc
Definition: cs_cdo_quantities.h:212
cs_real_t * pvol_vc
Definition: cs_cdo_quantities.h:252
cs_quant_info_t cell_info
Definition: cs_cdo_quantities.h:161
cs_real_t * dface_normal
Definition: cs_cdo_quantities.h:237
bool remove_boundary_faces
Definition: cs_cdo_quantities.h:147
cs_real_t * edge_vector
Definition: cs_cdo_quantities.h:226
cs_nreal_3_t * b_face_u_normal
Definition: cs_cdo_quantities.h:191
void dump() const
Dump a cs_cdo_quantities_t structure (for debugging purpose)
Definition: cs_cdo_quantities.cpp:2001
const cs_real_t * get_face_center(cs_lnum_t f_id) const
Get the face center for a primal face (interior or border)
Definition: cs_cdo_quantities.h:351
cs_real_t * i_face_normal
Definition: cs_cdo_quantities.h:186
cs_flag_cartesian_axis_t * face_axis
Definition: cs_cdo_quantities.h:197
cs_real_t * dedge_vector
Definition: cs_cdo_quantities.h:210
Definition: cs_mesh_quantities.h:88
Definition: cs_defs.h:390
Definition: cs_cdo_quantities.h:120
double meas_max
Definition: cs_cdo_quantities.h:126
double meas_min
Definition: cs_cdo_quantities.h:125
double h_min
Definition: cs_cdo_quantities.h:127
double h_max
Definition: cs_cdo_quantities.h:128
Definition: cs_cdo_quantities.h:134
double meas
Definition: cs_cdo_quantities.h:136
double center[3]
Definition: cs_cdo_quantities.h:138
double unitv[3]
Definition: cs_cdo_quantities.h:137