My Project
programmer's documentation
|
#include "cs_cdo_connect.h"
#include "cs_cdo_local.h"
#include "cs_cdo_quantities.h"
#include "cs_mesh_location.h"
#include "cs_param.h"
#include "cs_property.h"
#include "cs_xdef.h"
#include "cs_xdef_eval.h"
Go to the source code of this file.
Data Structures | |
struct | cs_adv_field_t |
Macros | |
#define | CS_ADVECTION_FIELD_POST_COURANT (1 << 0) |
#define | CS_ADVECTION_FIELD_STEADY (1 << 1) /* steady-state field */ |
Enumerations | |
enum | cs_advection_field_key_t { CS_ADVKEY_DEFINE_AT_VERTICES, CS_ADVKEY_DEFINE_AT_BOUNDARY_FACES, CS_ADVKEY_POST_COURANT, CS_ADVKEY_STATE_STEADY, CS_ADVKEY_N_KEYS } |
List of available keys for setting an advection field. More... | |
enum | cs_advection_field_status_t { CS_ADVECTION_FIELD_NAVSTO, CS_ADVECTION_FIELD_LEGACY_NAVSTO, CS_ADVECTION_FIELD_GWF, CS_ADVECTION_FIELD_USER, CS_N_ADVECTION_FIELD_STATUS } |
Type of advection field. More... | |
enum | cs_advection_field_type_t { CS_ADVECTION_FIELD_TYPE_VELOCITY, CS_ADVECTION_FIELD_TYPE_FLUX, CS_N_ADVECTION_FIELD_TYPES } |
Status of the advection field. The advection field stands for what. More... | |
Functions | |
static void | cs_advection_field_set_type (cs_adv_field_t *adv, cs_advection_field_type_t type) |
Set the type of advection field for the given structure. More... | |
static bool | cs_advection_field_is_uniform (const cs_adv_field_t *adv) |
returns true if the advection field is uniform, otherwise false More... | |
static bool | cs_advection_field_is_cellwise (const cs_adv_field_t *adv) |
returns true if the advection field is uniform in each cell otherwise false More... | |
static const char * | cs_advection_field_get_name (const cs_adv_field_t *adv) |
Retrieve the name of an advection field. More... | |
static cs_xdef_type_t | cs_advection_field_get_deftype (const cs_adv_field_t *adv) |
Retrieve the type of definition used to set the current advection field structure. More... | |
static cs_field_t * | cs_advection_field_get_field (const cs_adv_field_t *adv, cs_mesh_location_type_t ml_type) |
Get a cs_field_t structure related to an advection field and a mesh location. More... | |
void | cs_advection_field_set_shared_pointers (const cs_cdo_quantities_t *quant, const cs_cdo_connect_t *connect) |
Set shared pointers to main domain members. More... | |
int | cs_advection_field_get_n_fields (void) |
Get the number of allocated cs_adv_field_t structures. More... | |
cs_adv_field_t * | cs_advection_field_by_name (const char *name) |
Search in the array of advection field structures which one has the name given in argument. More... | |
cs_adv_field_t * | cs_advection_field_by_id (int id) |
Search in the array of advection field structures which one has the id given in argument. More... | |
cs_adv_field_t * | cs_advection_field_add_user (const char *name) |
Add and initialize a new user-defined advection field structure. More... | |
cs_adv_field_t * | cs_advection_field_add (const char *name, cs_advection_field_status_t status) |
Add and initialize a new advection field structure. More... | |
void | cs_advection_field_destroy_all (void) |
Free all alllocated cs_adv_field_t structures and its related array. More... | |
bool | cs_advection_field_check_name (const cs_adv_field_t *adv, const char *ref_name) |
Check if the given advection field has the name ref_name. More... | |
void | cs_advection_field_log_setup (void) |
Print all setup information related to cs_adv_field_t structures. More... | |
void | cs_advection_field_set_option (cs_adv_field_t *adv, cs_advection_field_key_t key) |
Set optional parameters related to a cs_adv_field_t structure. More... | |
void | cs_advection_field_def_by_value (cs_adv_field_t *adv, cs_real_t vector[3]) |
Define the value of a cs_adv_field_t structure. More... | |
void | cs_advection_field_def_by_analytic (cs_adv_field_t *adv, cs_analytic_func_t *func, void *input) |
Define a cs_adv_field_t structure thanks to an analytic function. More... | |
void | cs_advection_field_def_by_array (cs_adv_field_t *adv, cs_flag_t loc, cs_real_t *array, bool is_owner, cs_lnum_t *index) |
Define a cs_adv_field_t structure thanks to an array of values. More... | |
void | cs_advection_field_def_by_field (cs_adv_field_t *adv, cs_field_t *field) |
Define a cs_adv_field_t structure thanks to an array of values. More... | |
void | cs_advection_field_def_boundary_flux_by_value (cs_adv_field_t *adv, const char *zname, cs_real_t normal_flux) |
Define the value of the boundary normal flux for the given cs_adv_field_t structure. More... | |
void | cs_advection_field_def_boundary_flux_by_analytic (cs_adv_field_t *adv, const char *zname, cs_analytic_func_t *func, void *input) |
Define the value of the boundary normal flux for the given cs_adv_field_t structure using an analytic function. More... | |
void | cs_advection_field_def_boundary_flux_by_array (cs_adv_field_t *adv, const char *zname, cs_flag_t loc, cs_real_t *array, bool is_owner, cs_lnum_t *index) |
Define the value of the boundary normal flux for the given cs_adv_field_t structure using an array of values. More... | |
void | cs_advection_field_create_fields (void) |
Create all needed cs_field_t structures related to an advection field. More... | |
void | cs_advection_field_finalize_setup (void) |
Last stage of the definition of an advection field based on several definitions (i.e. definition by subdomains on the boundary) More... | |
void | cs_advection_field_get_cell_vector (cs_lnum_t c_id, const cs_adv_field_t *adv, cs_nvec3_t *vect) |
Compute the value of the advection field at the cell center. More... | |
void | cs_advection_field_cw_eval_at_xyz (const cs_adv_field_t *adv, const cs_cell_mesh_t *cm, const cs_real_3_t xyz, cs_real_t time_eval, cs_nvec3_t *eval) |
Compute the value of the advection field at a specific location inside a cell. More... | |
void | cs_advection_field_in_cells (const cs_adv_field_t *adv, cs_real_t time_eval, cs_real_t *cell_values) |
Compute the mean-value of the advection field inside each cell. More... | |
void | cs_advection_field_at_vertices (const cs_adv_field_t *adv, cs_real_t time_eval, cs_real_t *vtx_values) |
Compute the value of the advection field at vertices. More... | |
void | cs_advection_field_across_boundary (const cs_adv_field_t *adv, cs_real_t time_eval, cs_real_t *flx_values) |
Compute the value of the normal flux of the advection field across the boundary faces. More... | |
void | cs_advection_field_cw_boundary_f2v_flux (const cs_cell_mesh_t *cm, const cs_adv_field_t *adv, short int f, cs_real_t time_eval, cs_real_t *fluxes) |
Compute the value of the normal flux of the advection field across the closure of the dual cell related to each vertex belonging to the boundary face f. More... | |
cs_real_t | cs_advection_field_cw_boundary_face_flux (const cs_real_t time_eval, const short int f, const cs_cell_mesh_t *cm, const cs_adv_field_t *adv) |
Compute the value of the normal flux of the advection field across a boundary face f (cellwise version) More... | |
void | cs_advection_field_cw_face_flux (const cs_cell_mesh_t *cm, const cs_adv_field_t *adv, cs_real_t time_eval, cs_real_t *fluxes) |
Compute the value of the flux of the advection field across the the (primal) faces of a cell. More... | |
void | cs_advection_field_cw_dface_flux (const cs_cell_mesh_t *cm, const cs_adv_field_t *adv, cs_real_t time_eval, cs_real_t *fluxes) |
Compute the value of the flux of the advection field across the the dual faces of a cell. More... | |
void | cs_advection_field_update (cs_real_t t_eval, bool cur2prev) |
For each cs_adv_field_t structures, update the values of the related field(s) More... | |
void | cs_advection_get_peclet (const cs_adv_field_t *adv, const cs_property_t *diff, cs_real_t t_eval, cs_real_t peclet[]) |
Compute the Peclet number in each cell. More... | |
void | cs_advection_get_courant (const cs_adv_field_t *adv, cs_real_t dt_cur, cs_real_t courant[]) |
Compute the Courant number in each cell. More... | |
cs_real_t * | cs_advection_field_divergence_at_vertices (const cs_adv_field_t *adv, cs_real_t t_eval) |
Compute the divergence of the advection field at vertices Useful for CDO Vertex-based schemes. More... | |
List of available keys for setting an advection field.
Type of advection field.
void cs_advection_field_across_boundary | ( | const cs_adv_field_t * | adv, |
cs_real_t | time_eval, | ||
cs_real_t * | flx_values | ||
) |
Compute the value of the normal flux of the advection field across the boundary faces.
[in] | adv | pointer to a cs_adv_field_t structure |
[in] | time_eval | physical time at which one evaluates the term |
[in,out] | flx_values | array storing the results |
cs_adv_field_t* cs_advection_field_add | ( | const char * | name, |
cs_advection_field_status_t | status | ||
) |
Add and initialize a new advection field structure.
[in] | name | name of the advection field |
[in] | status | status of the advection field to create |
cs_adv_field_t* cs_advection_field_add_user | ( | const char * | name | ) |
Add and initialize a new user-defined advection field structure.
[in] | name | name of the advection field |
void cs_advection_field_at_vertices | ( | const cs_adv_field_t * | adv, |
cs_real_t | time_eval, | ||
cs_real_t * | vtx_values | ||
) |
Compute the value of the advection field at vertices.
[in] | adv | pointer to a cs_adv_field_t structure |
[in] | time_eval | physical time at which one evaluates the term |
[in,out] | vtx_values | array storing the results |
cs_adv_field_t* cs_advection_field_by_id | ( | int | id | ) |
Search in the array of advection field structures which one has the id given in argument.
[in] | id | identification number |
cs_adv_field_t* cs_advection_field_by_name | ( | const char * | name | ) |
Search in the array of advection field structures which one has the name given in argument.
[in] | name | name of the advection field |
bool cs_advection_field_check_name | ( | const cs_adv_field_t * | adv, |
const char * | ref_name | ||
) |
Check if the given advection field has the name ref_name.
[in] | adv | pointer to a cs_adv_field_t structure to test |
[in] | ref_name | name of the advection field to find |
void cs_advection_field_create_fields | ( | void | ) |
Create all needed cs_field_t structures related to an advection field.
void cs_advection_field_cw_boundary_f2v_flux | ( | const cs_cell_mesh_t * | cm, |
const cs_adv_field_t * | adv, | ||
short int | f, | ||
cs_real_t | time_eval, | ||
cs_real_t * | fluxes | ||
) |
Compute the value of the normal flux of the advection field across the closure of the dual cell related to each vertex belonging to the boundary face f.
[in] | cm | pointer to a cs_cell_mesh_t structure |
[in] | adv | pointer to a cs_adv_field_t structure |
[in] | f | face id in the cellwise numbering |
[in] | time_eval | physical time at which one evaluates the term |
[in,out] | fluxes | normal boundary flux for each vertex of the face |
cs_real_t cs_advection_field_cw_boundary_face_flux | ( | const cs_real_t | time_eval, |
const short int | f, | ||
const cs_cell_mesh_t * | cm, | ||
const cs_adv_field_t * | adv | ||
) |
Compute the value of the normal flux of the advection field across a boundary face f (cellwise version)
[in] | time_eval | physical time at which one evaluates the term |
[in] | f | face id in the cellwise numbering |
[in] | cm | pointer to a cs_cell_mesh_t structure |
[in] | adv | pointer to a cs_adv_field_t structure |
void cs_advection_field_cw_dface_flux | ( | const cs_cell_mesh_t * | cm, |
const cs_adv_field_t * | adv, | ||
cs_real_t | time_eval, | ||
cs_real_t * | fluxes | ||
) |
Compute the value of the flux of the advection field across the the dual faces of a cell.
[in] | cm | pointer to a cs_cell_mesh_t structure |
[in] | adv | pointer to a cs_adv_field_t structure |
[in] | time_eval | physical time at which one evaluates the term |
[in,out] | fluxes | array of values attached to dual faces of a cell |
void cs_advection_field_cw_eval_at_xyz | ( | const cs_adv_field_t * | adv, |
const cs_cell_mesh_t * | cm, | ||
const cs_real_3_t | xyz, | ||
cs_real_t | time_eval, | ||
cs_nvec3_t * | eval | ||
) |
Compute the value of the advection field at a specific location inside a cell.
[in] | adv | pointer to a cs_adv_field_t structure |
[in] | cm | pointer to a cs_cell_mesh_t structure |
[in] | xyz | location where to perform the evaluation |
[in] | time_eval | physical time at which one evaluates the term |
[in,out] | eval | pointer to a cs_nvec3_t |
void cs_advection_field_cw_face_flux | ( | const cs_cell_mesh_t * | cm, |
const cs_adv_field_t * | adv, | ||
cs_real_t | time_eval, | ||
cs_real_t * | fluxes | ||
) |
Compute the value of the flux of the advection field across the the (primal) faces of a cell.
[in] | cm | pointer to a cs_cell_mesh_t structure |
[in] | adv | pointer to a cs_adv_field_t structure |
[in] | time_eval | physical time at which one evaluates the term |
[in,out] | fluxes | array of values attached to primal faces of a cell |
void cs_advection_field_def_boundary_flux_by_analytic | ( | cs_adv_field_t * | adv, |
const char * | zname, | ||
cs_analytic_func_t * | func, | ||
void * | input | ||
) |
Define the value of the boundary normal flux for the given cs_adv_field_t structure using an analytic function.
[in,out] | adv | pointer to a cs_adv_field_t structure |
[in] | zname | name of the boundary zone to consider |
[in] | func | pointer to a function |
[in] | input | NULL or pointer to a structure cast on-the-fly |
void cs_advection_field_def_boundary_flux_by_array | ( | cs_adv_field_t * | adv, |
const char * | zname, | ||
cs_flag_t | loc, | ||
cs_real_t * | array, | ||
bool | is_owner, | ||
cs_lnum_t * | index | ||
) |
Define the value of the boundary normal flux for the given cs_adv_field_t structure using an array of values.
[in,out] | adv | pointer to a cs_adv_field_t structure |
[in] | zname | name of the boundary zone to consider |
[in] | loc | information to know where are located values |
[in] | array | pointer to an array |
[in] | is_owner | transfer the lifecycle to the cs_xdef_t structure (true or false) |
[in] | index | optional pointer to the array index |
void cs_advection_field_def_boundary_flux_by_value | ( | cs_adv_field_t * | adv, |
const char * | zname, | ||
cs_real_t | normal_flux | ||
) |
Define the value of the boundary normal flux for the given cs_adv_field_t structure.
[in,out] | adv | pointer to a cs_adv_field_t structure |
[in] | zname | name of the boundary zone to consider |
[in] | normal_flux | value to set |
void cs_advection_field_def_by_analytic | ( | cs_adv_field_t * | adv, |
cs_analytic_func_t * | func, | ||
void * | input | ||
) |
Define a cs_adv_field_t structure thanks to an analytic function.
[in,out] | adv | pointer to a cs_adv_field_t structure |
[in] | func | pointer to a function |
[in] | input | NULL or pointer to a structure cast on-the-fly |
void cs_advection_field_def_by_array | ( | cs_adv_field_t * | adv, |
cs_flag_t | loc, | ||
cs_real_t * | array, | ||
bool | is_owner, | ||
cs_lnum_t * | index | ||
) |
Define a cs_adv_field_t structure thanks to an array of values.
[in,out] | adv | pointer to a cs_adv_field_t structure |
[in] | loc | information to know where are located values |
[in] | array | pointer to an array |
[in] | is_owner | transfer the lifecycle to the cs_xdef_t structure (true or false) |
[in] | index | optional pointer to the array index |
void cs_advection_field_def_by_field | ( | cs_adv_field_t * | adv, |
cs_field_t * | field | ||
) |
Define a cs_adv_field_t structure thanks to an array of values.
[in,out] | adv | pointer to a cs_adv_field_t structure |
[in] | field | pointer to a cs_field_t structure |
void cs_advection_field_def_by_value | ( | cs_adv_field_t * | adv, |
cs_real_t | vector[3] | ||
) |
Define the value of a cs_adv_field_t structure.
[in,out] | adv | pointer to a cs_adv_field_t structure |
[in] | vector | values to set |
void cs_advection_field_destroy_all | ( | void | ) |
Free all alllocated cs_adv_field_t structures and its related array.
cs_real_t* cs_advection_field_divergence_at_vertices | ( | const cs_adv_field_t * | adv, |
cs_real_t | t_eval | ||
) |
Compute the divergence of the advection field at vertices Useful for CDO Vertex-based schemes.
[in] | adv | pointer to the advection field struct. |
[in] | t_eval | time at which one evaluates the advection field |
void cs_advection_field_finalize_setup | ( | void | ) |
Last stage of the definition of an advection field based on several definitions (i.e. definition by subdomains on the boundary)
void cs_advection_field_get_cell_vector | ( | cs_lnum_t | c_id, |
const cs_adv_field_t * | adv, | ||
cs_nvec3_t * | vect | ||
) |
Compute the value of the advection field at the cell center.
[in] | c_id | id of the current cell |
[in] | adv | pointer to a cs_adv_field_t structure |
[in,out] | vect | pointer to a cs_nvec3_t structure (meas + unitv) |
|
inlinestatic |
Retrieve the type of definition used to set the current advection field structure.
[in] | adv | pointer to an advection field structure |
|
inlinestatic |
Get a cs_field_t structure related to an advection field and a mesh location.
[in] | adv | pointer to a cs_adv_field_t structure |
[in] | ml_type | type of mesh location (cells or vertices) |
int cs_advection_field_get_n_fields | ( | void | ) |
Get the number of allocated cs_adv_field_t structures.
|
inlinestatic |
Retrieve the name of an advection field.
[in] | adv | pointer to an advection field structure |
void cs_advection_field_in_cells | ( | const cs_adv_field_t * | adv, |
cs_real_t | time_eval, | ||
cs_real_t * | cell_values | ||
) |
Compute the mean-value of the advection field inside each cell.
[in] | adv | pointer to a cs_adv_field_t structure |
[in] | time_eval | physical time at which one evaluates the term |
[in,out] | cell_values | array of values at cell centers |
|
inlinestatic |
returns true if the advection field is uniform in each cell otherwise false
[in] | adv | pointer to an advection field to test |
|
inlinestatic |
returns true if the advection field is uniform, otherwise false
[in] | adv | pointer to an advection field to test |
void cs_advection_field_log_setup | ( | void | ) |
Print all setup information related to cs_adv_field_t structures.
void cs_advection_field_set_option | ( | cs_adv_field_t * | adv, |
cs_advection_field_key_t | key | ||
) |
Set optional parameters related to a cs_adv_field_t structure.
[in,out] | adv | pointer to a cs_adv_field_t structure |
[in] | key | key related to the member of adv to set |
void cs_advection_field_set_shared_pointers | ( | const cs_cdo_quantities_t * | quant, |
const cs_cdo_connect_t * | connect | ||
) |
Set shared pointers to main domain members.
[in] | quant | additional mesh quantities struct. |
[in] | connect | pointer to a cs_cdo_connect_t struct. |
|
inlinestatic |
Set the type of advection field for the given structure.
[in,out] | adv | pointer to an advection field structure |
[in] | type | type to set |
void cs_advection_field_update | ( | cs_real_t | t_eval, |
bool | cur2prev | ||
) |
For each cs_adv_field_t structures, update the values of the related field(s)
[in] | t_eval | physical time at which one evaluates the term |
[in] | cur2prev | true or false |
void cs_advection_get_courant | ( | const cs_adv_field_t * | adv, |
cs_real_t | dt_cur, | ||
cs_real_t | courant[] | ||
) |
Compute the Courant number in each cell.
[in] | adv | pointer to the advection field struct. |
[in] | dt_cur | current time step |
[in,out] | courant | pointer to an array storing the Courant number |
void cs_advection_get_peclet | ( | const cs_adv_field_t * | adv, |
const cs_property_t * | diff, | ||
cs_real_t | t_eval, | ||
cs_real_t | peclet[] | ||
) |
Compute the Peclet number in each cell.
[in] | adv | pointer to the advection field struct. |
[in] | diff | pointer to the diffusion property struct. |
[in] | t_eval | time at which one evaluates the advection field |
[in,out] | peclet | pointer to an array storing the Peclet number |