My Project
programmer's documentation
Data Structures | Macros | Enumerations | Functions
cs_advection_field.h File Reference
#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"
Include dependency graph for cs_advection_field.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_tcs_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_tcs_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_tcs_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_tcs_advection_field_add_user (const char *name)
 Add and initialize a new user-defined advection field structure. More...
 
cs_adv_field_tcs_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_tcs_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...
 

Enumeration Type Documentation

◆ cs_advection_field_key_t

List of available keys for setting an advection field.

Enumerator
CS_ADVKEY_DEFINE_AT_VERTICES 

Define a field structure related to the advection field at vertices Post-processing and log operations are automatically activated.

CS_ADVKEY_DEFINE_AT_BOUNDARY_FACES 

Define a field structure related to the advection field at boundary faces Post-processing and log operations are automatically activated.

CS_ADVKEY_POST_COURANT 

Perform the computation (and post-process) of the Courant number

CS_ADVKEY_STATE_STEADY 

Advection field is steady-state

CS_ADVKEY_N_KEYS 

◆ cs_advection_field_status_t

Type of advection field.

Enumerator
CS_ADVECTION_FIELD_NAVSTO 

Advection field stemming from the velocity in the (Navier-)Stokes system

CS_ADVECTION_FIELD_LEGACY_NAVSTO 

Advection field stemming from the mass flux in the resolution of the Navier–Stokes system with the legacy Finite Volume solver

CS_ADVECTION_FIELD_GWF 

Advection field stemming from the "GroundWater Flows" module. This is the Darcean flux.

CS_ADVECTION_FIELD_USER 

User-defined advection field.

CS_N_ADVECTION_FIELD_STATUS 

◆ cs_advection_field_type_t

Status of the advection field. The advection field stands for what.

Enumerator
CS_ADVECTION_FIELD_TYPE_VELOCITY 
CS_ADVECTION_FIELD_TYPE_FLUX 
CS_N_ADVECTION_FIELD_TYPES 

Function Documentation

◆ cs_advection_field_across_boundary()

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.

Parameters
[in]advpointer to a cs_adv_field_t structure
[in]time_evalphysical time at which one evaluates the term
[in,out]flx_valuesarray storing the results

◆ cs_advection_field_add()

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.

Parameters
[in]namename of the advection field
[in]statusstatus of the advection field to create
Returns
a pointer to the new allocated cs_adv_field_t structure

◆ cs_advection_field_add_user()

cs_adv_field_t* cs_advection_field_add_user ( const char *  name)

Add and initialize a new user-defined advection field structure.

Parameters
[in]namename of the advection field
Returns
a pointer to the new allocated cs_adv_field_t structure

◆ cs_advection_field_at_vertices()

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.

Parameters
[in]advpointer to a cs_adv_field_t structure
[in]time_evalphysical time at which one evaluates the term
[in,out]vtx_valuesarray storing the results

◆ cs_advection_field_by_id()

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.

Parameters
[in]ididentification number
Returns
a pointer to a cs_adv_field_t structure or NULL if not found

◆ cs_advection_field_by_name()

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.

Parameters
[in]namename of the advection field
Returns
a pointer to a cs_adv_field_t structure or NULL if not found

◆ cs_advection_field_check_name()

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.

Parameters
[in]advpointer to a cs_adv_field_t structure to test
[in]ref_namename of the advection field to find
Returns
true if the name of the advection field is ref_name otherwise false

◆ cs_advection_field_create_fields()

void cs_advection_field_create_fields ( void  )

Create all needed cs_field_t structures related to an advection field.

◆ cs_advection_field_cw_boundary_f2v_flux()

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.

Parameters
[in]cmpointer to a cs_cell_mesh_t structure
[in]advpointer to a cs_adv_field_t structure
[in]fface id in the cellwise numbering
[in]time_evalphysical time at which one evaluates the term
[in,out]fluxesnormal boundary flux for each vertex of the face

◆ cs_advection_field_cw_boundary_face_flux()

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)

Parameters
[in]time_evalphysical time at which one evaluates the term
[in]fface id in the cellwise numbering
[in]cmpointer to a cs_cell_mesh_t structure
[in]advpointer to a cs_adv_field_t structure
Returns
the normal boundary flux for the face f

◆ cs_advection_field_cw_dface_flux()

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.

Parameters
[in]cmpointer to a cs_cell_mesh_t structure
[in]advpointer to a cs_adv_field_t structure
[in]time_evalphysical time at which one evaluates the term
[in,out]fluxesarray of values attached to dual faces of a cell

◆ cs_advection_field_cw_eval_at_xyz()

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.

Parameters
[in]advpointer to a cs_adv_field_t structure
[in]cmpointer to a cs_cell_mesh_t structure
[in]xyzlocation where to perform the evaluation
[in]time_evalphysical time at which one evaluates the term
[in,out]evalpointer to a cs_nvec3_t

◆ cs_advection_field_cw_face_flux()

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.

Parameters
[in]cmpointer to a cs_cell_mesh_t structure
[in]advpointer to a cs_adv_field_t structure
[in]time_evalphysical time at which one evaluates the term
[in,out]fluxesarray of values attached to primal faces of a cell

◆ cs_advection_field_def_boundary_flux_by_analytic()

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.

Parameters
[in,out]advpointer to a cs_adv_field_t structure
[in]znamename of the boundary zone to consider
[in]funcpointer to a function
[in]inputNULL or pointer to a structure cast on-the-fly

◆ cs_advection_field_def_boundary_flux_by_array()

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.

Parameters
[in,out]advpointer to a cs_adv_field_t structure
[in]znamename of the boundary zone to consider
[in]locinformation to know where are located values
[in]arraypointer to an array
[in]is_ownertransfer the lifecycle to the cs_xdef_t structure (true or false)
[in]indexoptional pointer to the array index

◆ cs_advection_field_def_boundary_flux_by_value()

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.

Parameters
[in,out]advpointer to a cs_adv_field_t structure
[in]znamename of the boundary zone to consider
[in]normal_fluxvalue to set

◆ cs_advection_field_def_by_analytic()

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.

Parameters
[in,out]advpointer to a cs_adv_field_t structure
[in]funcpointer to a function
[in]inputNULL or pointer to a structure cast on-the-fly

◆ cs_advection_field_def_by_array()

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.

Parameters
[in,out]advpointer to a cs_adv_field_t structure
[in]locinformation to know where are located values
[in]arraypointer to an array
[in]is_ownertransfer the lifecycle to the cs_xdef_t structure (true or false)
[in]indexoptional pointer to the array index

◆ cs_advection_field_def_by_field()

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.

Parameters
[in,out]advpointer to a cs_adv_field_t structure
[in]fieldpointer to a cs_field_t structure

◆ cs_advection_field_def_by_value()

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.

Parameters
[in,out]advpointer to a cs_adv_field_t structure
[in]vectorvalues to set

◆ cs_advection_field_destroy_all()

void cs_advection_field_destroy_all ( void  )

Free all alllocated cs_adv_field_t structures and its related array.

Returns
a NULL pointer

◆ cs_advection_field_divergence_at_vertices()

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.

Parameters
[in]advpointer to the advection field struct.
[in]t_evaltime at which one evaluates the advection field
Returns
a pointer to an array storing the result

◆ cs_advection_field_finalize_setup()

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)

◆ cs_advection_field_get_cell_vector()

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.

Parameters
[in]c_idid of the current cell
[in]advpointer to a cs_adv_field_t structure
[in,out]vectpointer to a cs_nvec3_t structure (meas + unitv)

◆ cs_advection_field_get_deftype()

static cs_xdef_type_t cs_advection_field_get_deftype ( const cs_adv_field_t adv)
inlinestatic

Retrieve the type of definition used to set the current advection field structure.

Parameters
[in]advpointer to an advection field structure
Returns
the type of definition

◆ cs_advection_field_get_field()

static cs_field_t* cs_advection_field_get_field ( const cs_adv_field_t adv,
cs_mesh_location_type_t  ml_type 
)
inlinestatic

Get a cs_field_t structure related to an advection field and a mesh location.

Parameters
[in]advpointer to a cs_adv_field_t structure
[in]ml_typetype of mesh location (cells or vertices)
Returns
a pointer to a cs_field_t structure

◆ cs_advection_field_get_n_fields()

int cs_advection_field_get_n_fields ( void  )

Get the number of allocated cs_adv_field_t structures.

Returns
the number of advection fields

◆ cs_advection_field_get_name()

static const char* cs_advection_field_get_name ( const cs_adv_field_t adv)
inlinestatic

Retrieve the name of an advection field.

Parameters
[in]advpointer to an advection field structure
Returns
the name of the related advection field

◆ cs_advection_field_in_cells()

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.

Parameters
[in]advpointer to a cs_adv_field_t structure
[in]time_evalphysical time at which one evaluates the term
[in,out]cell_valuesarray of values at cell centers

◆ cs_advection_field_is_cellwise()

static bool cs_advection_field_is_cellwise ( const cs_adv_field_t adv)
inlinestatic

returns true if the advection field is uniform in each cell otherwise false

Parameters
[in]advpointer to an advection field to test
Returns
true or false

◆ cs_advection_field_is_uniform()

static bool cs_advection_field_is_uniform ( const cs_adv_field_t adv)
inlinestatic

returns true if the advection field is uniform, otherwise false

Parameters
[in]advpointer to an advection field to test
Returns
true or false

◆ cs_advection_field_log_setup()

void cs_advection_field_log_setup ( void  )

Print all setup information related to cs_adv_field_t structures.

◆ cs_advection_field_set_option()

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.

Parameters
[in,out]advpointer to a cs_adv_field_t structure
[in]keykey related to the member of adv to set

◆ cs_advection_field_set_shared_pointers()

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.

Parameters
[in]quantadditional mesh quantities struct.
[in]connectpointer to a cs_cdo_connect_t struct.

◆ cs_advection_field_set_type()

static void cs_advection_field_set_type ( cs_adv_field_t adv,
cs_advection_field_type_t  type 
)
inlinestatic

Set the type of advection field for the given structure.

Parameters
[in,out]advpointer to an advection field structure
[in]typetype to set

◆ cs_advection_field_update()

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)

Parameters
[in]t_evalphysical time at which one evaluates the term
[in]cur2prevtrue or false

◆ cs_advection_get_courant()

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.

Parameters
[in]advpointer to the advection field struct.
[in]dt_curcurrent time step
[in,out]courantpointer to an array storing the Courant number

◆ cs_advection_get_peclet()

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.

Parameters
[in]advpointer to the advection field struct.
[in]diffpointer to the diffusion property struct.
[in]t_evaltime at which one evaluates the advection field
[in,out]pecletpointer to an array storing the Peclet number