programmer's documentation
Macros | Functions | Variables
cs_property.c File Reference
#include "cs_defs.h"
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <string.h>
#include <math.h>
#include <bft_mem.h>
#include <bft_printf.h>
#include "cs_math.h"
#include "cs_mesh_location.h"
#include "cs_reco.h"
#include "cs_timer_stats.h"
#include "cs_property.h"
Include dependency graph for cs_property.c:

Macros

#define CS_PROPERTY_DBG   1
 

Functions

static void _check_tensor_symmetry (const cs_property_t *pty, cs_get_t get)
 Check if the settings are valid. More...
 
static cs_param_def_t_init_new_def (cs_property_t *pty, const char *ml_name)
 Add a new definition to a cs_property_t structure defined by domain Sanity checks on the settings related to this definition. More...
 
static void _get_tensor_by_value (const cs_property_t *pty, cs_get_t get, cs_real_3_t *tensor)
 Compute the value using a law with one argument. More...
 
static double _get_cell_value_from_array (cs_lnum_t c_id, const cs_desc_t desc, const cs_real_t array[])
 Retrieve the value at the cell center of cell c_id from an array. More...
 
static void _get_cell_vector_from_array (cs_lnum_t c_id, const cs_desc_t desc, const cs_real_t array[], cs_real_3_t vect_val)
 Retrieve the vector at the cell center of cell c_id from an array. More...
 
static void _get_result_by_onevar_law (cs_lnum_t c_id, const cs_property_t *pty, cs_onevar_law_func_t *law, const void *context, cs_get_t *get)
 Compute the value using a law with one scalar variable. More...
 
static void _get_result_by_twovar_law (cs_lnum_t c_id, const cs_property_t *pty, cs_twovar_law_func_t *law, const void *context, cs_get_t *get)
 Compute the value using a law with two scalar variables. More...
 
static void _get_result_by_scavec_law (cs_lnum_t c_id, const cs_property_t *pty, cs_scavec_law_func_t *law, const void *context, cs_get_t *get)
 Compute the value using a law with two arguments: one scalar and one vector-valued. More...
 
void cs_property_set_shared_pointers (const cs_cdo_quantities_t *quant, const cs_cdo_connect_t *connect, const cs_time_step_t *time_step)
 Set shared pointers to main domain members. More...
 
void cs_property_set_timer_stats (int level)
 Initialize cs_timer_stats_t structure for monitoring purpose. More...
 
cs_property_t * cs_property_create (const char *name, const char *key_type, int n_subdomains)
 Create and initialize a new property structure. More...
 
cs_property_t * cs_property_free (cs_property_t *pty)
 Free a cs_property_t structure. More...
 
bool cs_property_check_name (const cs_property_t *pty, const char *ref_name)
 Check if the given property has the name ref_name. More...
 
bool cs_property_is_uniform (const cs_property_t *pty)
 returns true if the property is uniform, otherwise false More...
 
const char * cs_property_get_name (const cs_property_t *pty)
 Retrieve the name of a property. More...
 
cs_property_type_t cs_property_get_type (const cs_property_t *pty)
 Retrieve the type of a property. More...
 
void cs_property_summary (const cs_property_t *pty)
 Print a summary of a cs_property_t structure. More...
 
void cs_property_def_by_value (cs_property_t *pty, const char *ml_name, const char *key_val)
 Define a cs_property_t structure by value for entities attached to the mesh location named ml_name. More...
 
void cs_property_iso_def_by_value (cs_property_t *pty, const char *ml_name, double val)
 Define an isotropic cs_property_t structure by value for entities attached to the mesh location named ml_name. More...
 
void cs_property_ortho_def_by_value (cs_property_t *pty, const char *ml_name, const double val[])
 Define orthotropic cs_property_t structure by value for entities attached to the mesh location named ml_name. More...
 
void cs_property_aniso_def_by_value (cs_property_t *pty, const char *ml_name, const double tens[3][3])
 Define an anisotropic cs_property_t structure by value for entities attached to the mesh location named ml_name. More...
 
void cs_property_def_by_analytic (cs_property_t *pty, const char *ml_name, cs_analytic_func_t *func)
 Define a cs_property_t structure thanks to an analytic function in a subdomain attached to the mesh location named ml_name. More...
 
void cs_property_def_by_law (cs_property_t *pty, const char *ml_name, const void *context, cs_onevar_law_func_t *func)
 Define a cs_property_t structure thanks to law depending on one scalar variable in a subdomain attached to the mesh location named ml_name. More...
 
void cs_property_def_by_twovar_law (cs_property_t *pty, const char *ml_name, const void *context, cs_twovar_law_func_t *func)
 Define a cs_property_t structure thanks to a law depending on two scalars variables in a subdomain attached to the mesh location named ml_name. More...
 
void cs_property_def_by_scavec_law (cs_property_t *pty, const char *ml_name, const void *context, cs_scavec_law_func_t *func)
 Define a cs_property_t structure thanks to a law depending on a scalar and a vector variables in a subdomain attached to the mesh location named ml_name. More...
 
void cs_property_def_by_array (cs_property_t *pty, cs_desc_t desc, cs_real_t *array)
 Define a cs_property_t structure thanks to an array of values. More...
 
void cs_property_set_array (cs_property_t *pty, cs_desc_t desc, cs_real_t *array)
 Set the "array" member of a cs_property_t structure. More...
 
void cs_property_set_second_array (cs_property_t *pty, cs_desc_t desc, cs_real_t *array)
 Set the second "array" member of a cs_property_t structure. More...
 
void cs_property_get_cell_tensor (cs_lnum_t c_id, const cs_property_t *pty, bool do_inversion, cs_real_3_t *tensor)
 Compute the value of the tensor attached a property at the cell center. More...
 
cs_real_t cs_property_get_cell_value (cs_lnum_t c_id, const cs_property_t *pty)
 Compute the value of a property at the cell center. More...
 
void cs_property_get_fourier (const cs_property_t *pty, double dt, cs_real_t fourier[])
 Compute the Fourier number in each cell. More...
 

Variables

static const char _err_empty_pty []
 
static const cs_cdo_quantities_tcs_cdo_quant
 
static const cs_cdo_connect_tcs_cdo_connect
 
static const cs_time_step_tcs_time_step
 
static int property_ts_id = -1
 

Macro Definition Documentation

◆ CS_PROPERTY_DBG

#define CS_PROPERTY_DBG   1

Function Documentation

◆ _check_tensor_symmetry()

static void _check_tensor_symmetry ( const cs_property_t *  pty,
cs_get_t  get 
)
inlinestatic

Check if the settings are valid.

Parameters
[in]ptypointer to a cs_property_t structure
[in]getaccessor to the tensor values

◆ _get_cell_value_from_array()

static double _get_cell_value_from_array ( cs_lnum_t  c_id,
const cs_desc_t  desc,
const cs_real_t  array[] 
)
static

Retrieve the value at the cell center of cell c_id from an array.

Parameters
[in]c_idif of the cell to treat
[in]descinformation about the array to handle
[in]arrayvalues

◆ _get_cell_vector_from_array()

static void _get_cell_vector_from_array ( cs_lnum_t  c_id,
const cs_desc_t  desc,
const cs_real_t  array[],
cs_real_3_t  vect_val 
)
static

Retrieve the vector at the cell center of cell c_id from an array.

Parameters
[in]c_idif of the cell to treat
[in]descinformation about the array to handle
[in]arrayvalues
[in,out]vect_valvector at the cell center

◆ _get_result_by_onevar_law()

static void _get_result_by_onevar_law ( cs_lnum_t  c_id,
const cs_property_t *  pty,
cs_onevar_law_func_t law,
const void *  context,
cs_get_t get 
)
static

Compute the value using a law with one scalar variable.

Parameters
[in]c_idcell id
[in]ptypointer to a cs_property_t structure
[in]lawfunction pointer to the law
[in]contextpointer to a structure
[in,out]getpointer to a union used to retrieve the result

◆ _get_result_by_scavec_law()

static void _get_result_by_scavec_law ( cs_lnum_t  c_id,
const cs_property_t *  pty,
cs_scavec_law_func_t law,
const void *  context,
cs_get_t get 
)
static

Compute the value using a law with two arguments: one scalar and one vector-valued.

Parameters
[in]c_idcell id
[in]ptypointer to a cs_property_t structure
[in]lawfunction pointer to the law
[in]contextpointer to a structure
[in,out]getpointer to a union used to retrieve the result

◆ _get_result_by_twovar_law()

static void _get_result_by_twovar_law ( cs_lnum_t  c_id,
const cs_property_t *  pty,
cs_twovar_law_func_t law,
const void *  context,
cs_get_t get 
)
static

Compute the value using a law with two scalar variables.

Parameters
[in]c_idcell id
[in]ptypointer to a cs_property_t structure
[in]lawfunction pointer to the law
[in]contextpointer to a structure
[in,out]getpointer to a union used to retrieve the result

◆ _get_tensor_by_value()

static void _get_tensor_by_value ( const cs_property_t *  pty,
cs_get_t  get,
cs_real_3_t tensor 
)
static

Compute the value using a law with one argument.

Parameters
[in]ptypointer to a cs_property_t structure
[in]getaccessor to the value
[in,out]tensorresult stored in a 3x3 tensor

◆ _init_new_def()

static cs_param_def_t* _init_new_def ( cs_property_t *  pty,
const char *  ml_name 
)
static

Add a new definition to a cs_property_t structure defined by domain Sanity checks on the settings related to this definition.

Parameters
[in,out]ptypointer to a cs_property_t structure
[in]ml_namename of the related mesh location
Returns
a pointer to a new definition to set

◆ cs_property_aniso_def_by_value()

void cs_property_aniso_def_by_value ( cs_property_t *  pty,
const char *  ml_name,
const double  tens[3][3] 
)

Define an anisotropic cs_property_t structure by value for entities attached to the mesh location named ml_name.

Parameters
[in,out]ptypointer to a cs_property_t structure
[in]ml_namename of the related mesh location
[in]tensvalues to set (3x3 tensor)

◆ cs_property_check_name()

bool cs_property_check_name ( const cs_property_t *  pty,
const char *  ref_name 
)

Check if the given property has the name ref_name.

Parameters
[in]ptypointer to a cs_property_t structure to test
[in]ref_namename of the property to find
Returns
true if the name of the property is ref_name otherwise false

◆ cs_property_create()

cs_property_t* cs_property_create ( const char *  name,
const char *  key_type,
int  n_subdomains 
)

Create and initialize a new property structure.

Parameters
[in]namename of the property
[in]key_typekeyname of the type of property
[in]n_subdomainspiecewise definition on n_subdomains
Returns
a pointer to a new allocated cs_property_t structure

◆ cs_property_def_by_analytic()

void cs_property_def_by_analytic ( cs_property_t *  pty,
const char *  ml_name,
cs_analytic_func_t func 
)

Define a cs_property_t structure thanks to an analytic function in a subdomain attached to the mesh location named ml_name.

Parameters
[in,out]ptypointer to a cs_property_t structure
[in]ml_namename of the related mesh location
[in]funcpointer to a cs_analytic_func_t function

◆ cs_property_def_by_array()

void cs_property_def_by_array ( cs_property_t *  pty,
cs_desc_t  desc,
cs_real_t array 
)

Define a cs_property_t structure thanks to an array of values.

Parameters
[in,out]ptypointer to a cs_property_t structure
[in]descinformation about this array
[in]arraypointer to an array

◆ cs_property_def_by_law()

void cs_property_def_by_law ( cs_property_t *  pty,
const char *  ml_name,
const void *  context,
cs_onevar_law_func_t func 
)

Define a cs_property_t structure thanks to law depending on one scalar variable in a subdomain attached to the mesh location named ml_name.

Parameters
[in,out]ptypointer to a cs_property_t structure
[in]ml_namename of the related mesh location
[in]contextpointer to a structure (may be NULL)
[in]funcpointer to a law function defined by subdomain

◆ cs_property_def_by_scavec_law()

void cs_property_def_by_scavec_law ( cs_property_t *  pty,
const char *  ml_name,
const void *  context,
cs_scavec_law_func_t func 
)

Define a cs_property_t structure thanks to a law depending on a scalar and a vector variables in a subdomain attached to the mesh location named ml_name.

Define a cs_property_t structure by a law (using as arguments a scalar and a vector) for entities attached to the mesh location named ml_name.

Parameters
[in,out]ptypointer to a cs_property_t structure
[in]ml_namename of the related mesh location
[in]contextpointer to a structure (may be NULL)
[in]funcpointer to a law function defined by subdomain

◆ cs_property_def_by_twovar_law()

void cs_property_def_by_twovar_law ( cs_property_t *  pty,
const char *  ml_name,
const void *  context,
cs_twovar_law_func_t func 
)

Define a cs_property_t structure thanks to a law depending on two scalars variables in a subdomain attached to the mesh location named ml_name.

Parameters
[in,out]ptypointer to a cs_property_t structure
[in]ml_namename of the related mesh location
[in]contextpointer to a structure (may be NULL)
[in]funcpointer to a function

◆ cs_property_def_by_value()

void cs_property_def_by_value ( cs_property_t *  pty,
const char *  ml_name,
const char *  key_val 
)

Define a cs_property_t structure by value for entities attached to the mesh location named ml_name.

Parameters
[in,out]ptypointer to a cs_property_t structure
[in]ml_namename of the related mesh location
[in]keyvalaccessor to the value to set

◆ cs_property_free()

cs_property_t* cs_property_free ( cs_property_t *  pty)

Free a cs_property_t structure.

Parameters
[in,out]ptypointer to a cs_property_t structure to free
Returns
a NULL pointer

◆ cs_property_get_cell_tensor()

void cs_property_get_cell_tensor ( cs_lnum_t  c_id,
const cs_property_t *  pty,
bool  do_inversion,
cs_real_3_t tensor 
)

Compute the value of the tensor attached a property at the cell center.

Parameters
[in]c_idid of the current cell
[in]ptypointer to a cs_property_t structure
[in]do_inversiontrue or false
[in,out]tensor3x3 matrix

◆ cs_property_get_cell_value()

cs_real_t cs_property_get_cell_value ( cs_lnum_t  c_id,
const cs_property_t *  pty 
)

Compute the value of a property at the cell center.

Parameters
[in]c_idid of the current cell
[in]ptypointer to a cs_property_t structure
Returns
the value of the property for the given cell

◆ cs_property_get_fourier()

void cs_property_get_fourier ( const cs_property_t *  pty,
double  dt,
cs_real_t  fourier[] 
)

Compute the Fourier number in each cell.

Parameters
[in]ptypointer to the diffusive property struct.
[in]dtvalue of the current time step
[in,out]fourierpointer to an array storing Fourier numbers

◆ cs_property_get_name()

const char* cs_property_get_name ( const cs_property_t *  pty)

Retrieve the name of a property.

Parameters
[in]ptypointer to a property
Returns
the name of the related property

◆ cs_property_get_type()

cs_property_type_t cs_property_get_type ( const cs_property_t *  pty)

Retrieve the type of a property.

Parameters
[in]ptypointer to a property
Returns
the type of the related property

◆ cs_property_is_uniform()

bool cs_property_is_uniform ( const cs_property_t *  pty)

returns true if the property is uniform, otherwise false

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

◆ cs_property_iso_def_by_value()

void cs_property_iso_def_by_value ( cs_property_t *  pty,
const char *  ml_name,
double  val 
)

Define an isotropic cs_property_t structure by value for entities attached to the mesh location named ml_name.

Parameters
[in,out]ptypointer to a cs_property_t structure
[in]ml_namename of the related mesh location
[in]valvalue to set

◆ cs_property_ortho_def_by_value()

void cs_property_ortho_def_by_value ( cs_property_t *  pty,
const char *  ml_name,
const double  val[] 
)

Define orthotropic cs_property_t structure by value for entities attached to the mesh location named ml_name.

Parameters
[in,out]ptypointer to a cs_property_t structure
[in]ml_namename of the related mesh location
[in]valvalues to set (vector of size 3)

◆ cs_property_set_array()

void cs_property_set_array ( cs_property_t *  pty,
cs_desc_t  desc,
cs_real_t array 
)

Set the "array" member of a cs_property_t structure.

Parameters
[in,out]ptypointer to a cs_property_t structure
[in]descinformation about this array
[in]arraypointer to an array of values

◆ cs_property_set_second_array()

void cs_property_set_second_array ( cs_property_t *  pty,
cs_desc_t  desc,
cs_real_t array 
)

Set the second "array" member of a cs_property_t structure.

Parameters
[in,out]ptypointer to a cs_property_t structure
[in]descinformation about this array
[in]arraypointer to an array of values

◆ cs_property_set_shared_pointers()

void cs_property_set_shared_pointers ( const cs_cdo_quantities_t quant,
const cs_cdo_connect_t connect,
const cs_time_step_t time_step 
)

Set shared pointers to main domain members.

Parameters
[in]quantadditional mesh quantities struct.
[in]connectpointer to a cs_cdo_connect_t struct.
[in]time_steppointer to a time step structure

◆ cs_property_set_timer_stats()

void cs_property_set_timer_stats ( int  level)

Initialize cs_timer_stats_t structure for monitoring purpose.

Parameters
[in]levellevel of details requested

◆ cs_property_summary()

void cs_property_summary ( const cs_property_t *  pty)

Print a summary of a cs_property_t structure.

Parameters
[in]ptypointer to a cs_property_t structure to summarize

Variable Documentation

◆ _err_empty_pty

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

◆ cs_cdo_connect

const cs_cdo_connect_t* cs_cdo_connect
static

◆ cs_cdo_quant

const cs_cdo_quantities_t* cs_cdo_quant
static

◆ cs_time_step

const cs_time_step_t* cs_time_step
static

◆ property_ts_id

int property_ts_id = -1
static