programmer's documentation
Macros | Functions | Variables
cs_advection_field.c File Reference
#include "cs_defs.h"
#include <assert.h>
#include <ctype.h>
#include <float.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <bft_mem.h>
#include "cs_boundary_zone.h"
#include "cs_evaluate.h"
#include "cs_field.h"
#include "cs_log.h"
#include "cs_math.h"
#include "cs_mesh_location.h"
#include "cs_param_cdo.h"
#include "cs_reco.h"
#include "cs_volume_zone.h"
#include "cs_xdef.h"
#include "cs_zone.h"
#include "cs_advection_field.h"
Include dependency graph for cs_advection_field.c:

Macros

#define _dp3   cs_math_3_dot_product
 
#define CS_ADVECTION_FIELD_DBG   0
 

Functions

static void _fill_uniform_boundary_flux (const cs_cdo_quantities_t *cdoq, const cs_adjacency_t *f2e, const cs_adjacency_t *e2v, cs_lnum_t bf_id, cs_real_t face_flux, cs_real_t *fluxes)
 Update the contribution of the flux. More...
 
static void _fill_cw_uniform_boundary_flux (const cs_cell_mesh_t *cm, short int f, cs_real_t face_flux, cs_real_t *fluxes)
 Update the contribution of the flux for each vertex. 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_type_t type)
 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...
 
bool cs_advection_field_is_uniform (const cs_adv_field_t *adv)
 returns true if the advection field is uniform, otherwise false More...
 
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...
 
const char * cs_advection_field_get_name (const cs_adv_field_t *adv)
 Retrieve the name of an advection field. More...
 
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...
 
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, 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, 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_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_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_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_get_f2v_boundary_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 flux of the advection field across the the closure of the dual cell related to each vertex. More...
 
void cs_advection_field_get_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_get_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...
 

Variables

static const char _err_empty_adv []
 
static const cs_cdo_quantities_tcs_cdo_quant
 
static const cs_cdo_connect_tcs_cdo_connect
 
static int _n_adv_fields = 0
 
static cs_adv_field_t ** _adv_fields = NULL
 

Macro Definition Documentation

◆ _dp3

#define _dp3   cs_math_3_dot_product

◆ CS_ADVECTION_FIELD_DBG

#define CS_ADVECTION_FIELD_DBG   0

Function Documentation

◆ _fill_cw_uniform_boundary_flux()

static void _fill_cw_uniform_boundary_flux ( const cs_cell_mesh_t cm,
short int  f,
cs_real_t  face_flux,
cs_real_t fluxes 
)
static

Update the contribution of the flux for each vertex.

Parameters
[in]cmpointer to a cs_cell_mesh_t structure
[in]fface id in the cellwise numbering
[in]face_fluxvalue of the normal flux across the face
[in,out]fluxesnormal boundary flux for each vertex of the face

◆ _fill_uniform_boundary_flux()

static void _fill_uniform_boundary_flux ( const cs_cdo_quantities_t cdoq,
const cs_adjacency_t f2e,
const cs_adjacency_t e2v,
cs_lnum_t  bf_id,
cs_real_t  face_flux,
cs_real_t fluxes 
)
static

Update the contribution of the flux.

Parameters
[in]cdoqpointer to a cs_cdo_quantities_t structure
[in]f2eface –> edge connectivity
[in]e2vedge –> vertices connectivity
[in]bf_idboundary face id
[in]face_fluxvalue of the normal flux across the face
[in,out]fluxesarray of values to update

◆ 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_type_t  type 
)

Add and initialize a new advection field structure.

Parameters
[in]namename of the advection field
[in]typetype of advection field
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_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,
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]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,
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]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_eval_at_xyz()

void cs_advection_field_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_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_cw_dface_flux()

void cs_advection_field_get_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_get_cw_face_flux()

void cs_advection_field_get_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 dual faces of a cell

◆ cs_advection_field_get_deftype()

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.

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

◆ cs_advection_field_get_f2v_boundary_flux()

void cs_advection_field_get_f2v_boundary_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 flux of the advection field across the the closure of the dual cell related to each vertex.

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_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()

const char* cs_advection_field_get_name ( const cs_adv_field_t adv)

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()

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

Parameters
[in]advpointer to a property to test
Returns
true or false

◆ cs_advection_field_is_uniform()

bool cs_advection_field_is_uniform ( const cs_adv_field_t adv)

returns true if the advection field is uniform, otherwise false

Parameters
[in]advpointer to a property 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_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

Variable Documentation

◆ _adv_fields

cs_adv_field_t** _adv_fields = NULL
static

◆ _err_empty_adv

const char _err_empty_adv[]
static
Initial value:
=
" Stop setting an empty cs_adv_field_t structure.\n"
" Please check your settings.\n"

◆ _n_adv_fields

int _n_adv_fields = 0
static

◆ cs_cdo_connect

const cs_cdo_connect_t* cs_cdo_connect
static

◆ cs_cdo_quant

const cs_cdo_quantities_t* cs_cdo_quant
static