#include "cs_field.h"
#include "cs_flag.h"
#include "cs_param_types.h"
#include "cs_xdef.h"
#include "cs_xdef_cw_eval.h"
#include "cs_xdef_eval.h"
Go to the source code of this file.
Data Structures | |
struct | cs_property_t |
struct | cs_property_data_t |
Structure storing the evaluation of a property and its related data. More... | |
Macros | |
#define | CS_PROPERTY_MASS_DENSITY "mass_density" |
#define | CS_PROPERTY_POST_FOURIER (1 << 0) |
#define | CS_PROPERTY_ISO (1 << 0) |
#define | CS_PROPERTY_ORTHO (1 << 1) |
#define | CS_PROPERTY_ANISO (1 << 2) |
#define | CS_PROPERTY_ANISO_SYM (1 << 3) |
#define | CS_PROPERTY_BY_PRODUCT (1 << 4) |
#define | CS_PROPERTY_SUBCELL_DEFINITION (1 << 5) |
Typedefs | |
typedef cs_flag_t | cs_property_type_t |
Enumerations | |
enum | cs_property_key_t { CS_PTYKEY_POST_FOURIER, CS_PTYKEY_N_KEYS } |
List of available keys for setting options on a property. More... | |
Functions | |
static bool | cs_property_is_constant (const cs_property_t *pty) |
returns true if the property is steady and uniform, otherwise false More... | |
static bool | cs_property_is_steady (const cs_property_t *pty) |
returns true if the property is steady, otherwise false More... | |
static bool | cs_property_is_uniform (const cs_property_t *pty) |
returns true if the property is uniform, otherwise false More... | |
static bool | cs_property_is_isotropic (const cs_property_t *pty) |
returns true if the property is isotropic, otherwise false More... | |
static bool | cs_property_is_subcell (const cs_property_t *pty) |
returns true if the property is allowed to be evaluated on a sub-partition of a cell More... | |
static const char * | cs_property_get_name (const cs_property_t *pty) |
Retrieve the name of a property. More... | |
static cs_property_type_t | cs_property_get_type (const cs_property_t *pty) |
Retrieve the type of a property. More... | |
static int | cs_property_get_dim (const cs_property_t *pty) |
Retrieve the dimension of the property. More... | |
void | cs_property_init_sharing (const cs_cdo_quantities_t *quant, const cs_cdo_connect_t *connect) |
Set shared pointers to main domain members. More... | |
int | cs_property_get_n_properties (void) |
Retrieve the number of properties. More... | |
cs_property_t * | cs_property_add (const char *name, cs_property_type_t type) |
Create and initialize a new property structure. More... | |
cs_property_t * | cs_property_subcell_add (const char *name, cs_property_type_t type) |
Create and initialize a new property structure with an evaluation which can be called on a sub-partition of a cell. This kind of property is not available for all numerical scheme. By default, only one evaluation is performed in each cell. More... | |
cs_property_t * | cs_property_add_as_product (const char *name, const cs_property_t *pty_a, const cs_property_t *pty_b) |
Define a cs_property_t structure thanks to the product of two properties The type is infered from that of the related properties The value of the property is given as: value_ab = value_a * value_b. More... | |
cs_property_t * | cs_property_by_name (const char *name) |
Find the related property definition from its name. More... | |
cs_property_t * | cs_property_by_id (int id) |
Find the related property definition from its id. More... | |
void | cs_property_set_option (cs_property_t *pty, cs_property_key_t key) |
Set optional parameters related to a cs_property_t structure. More... | |
void | cs_property_set_reference_value (cs_property_t *pty, double refval) |
Set the reference value associated to a cs_property_t structure This is a real number even whatever the type of property is. More... | |
void | cs_property_destroy_all (void) |
Free all cs_property_t structures and the array storing all the structures. More... | |
void | cs_property_finalize_setup (void) |
Last stage of the definition of a property based on several definitions (i.e. definition by subdomains) More... | |
cs_property_data_t | cs_property_data_define (bool need_tensor, bool need_eigen, const cs_property_t *property) |
Define a cs_property_data_t structure (not a pointer to this structure). If property is NULL then one considers that this is a unitary property. More... | |
void | cs_property_data_init (bool need_tensor, bool need_eigen, const cs_property_t *property, cs_property_data_t *data) |
Initialize a cs_property_data_t structure. If property is NULL then one considers that this is a unitary property. More... | |
cs_xdef_t * | cs_property_def_constant_value (cs_property_t *pty, double val) |
Define a single uniform and steady isotropic definition for the given cs_property_t structure. This is a specialized variant of cs_property_def_iso_by_value since several assumptions are satisfied. More... | |
cs_xdef_t * | cs_property_def_iso_by_value (cs_property_t *pty, const char *zname, double val) |
Define an isotropic cs_property_t structure by value for entities related to a volume zone. More... | |
cs_xdef_t * | cs_property_def_ortho_by_value (cs_property_t *pty, const char *zname, double val[]) |
Define an orthotropic cs_property_t structure by value for entities related to a volume zone. More... | |
cs_xdef_t * | cs_property_def_aniso_by_value (cs_property_t *pty, const char *zname, cs_real_t tens[3][3]) |
Define an anisotropic cs_property_t structure by value for entities related to a volume zone. More... | |
cs_xdef_t * | cs_property_def_aniso_sym_by_value (cs_property_t *pty, const char *zname, cs_real_t symtens[6]) |
Define an anisotropic cs_property_t structure by value for entities related to a volume zone. More... | |
cs_xdef_t * | cs_property_def_by_time_func (cs_property_t *pty, const char *zname, cs_time_func_t *func, void *input) |
Define a cs_property_t structure thanks to an analytic function in a subdomain attached to the mesh location named ml_name. More... | |
cs_xdef_t * | cs_property_def_by_analytic (cs_property_t *pty, const char *zname, cs_analytic_func_t *func, void *input) |
Define a cs_property_t structure thanks to an analytic function in a subdomain attached to the mesh location named ml_name. More... | |
cs_xdef_t * | cs_property_def_by_func (cs_property_t *pty, const char *zname, void *context, cs_xdef_eval_t *get_eval_at_cell, cs_xdef_cw_eval_t *get_eval_at_cell_cw) |
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... | |
cs_xdef_t * | cs_property_def_by_array (cs_property_t *pty, cs_flag_t loc, cs_real_t *array, bool is_owner, const cs_lnum_t *index, const cs_lnum_t *ids) |
Define a cs_property_t structure thanks to an array of values. More... | |
void | cs_property_def_by_field (cs_property_t *pty, cs_field_t *field) |
Define a cs_property_t structure thanks to a field structure. More... | |
void | cs_property_iso_get_cell_values (cs_real_t t_eval, const cs_property_t *pty, int *pty_stride, cs_real_t **p_pty_vals) |
Evaluate the value of the property at each cell. Store the evaluation in the given array. More... | |
void | cs_property_eval_at_cells (cs_real_t t_eval, const cs_property_t *pty, cs_real_t *array) |
Evaluate the value of the property at each cell. Store the evaluation in the given array. More... | |
void | cs_property_get_cell_tensor (cs_lnum_t c_id, cs_real_t t_eval, const cs_property_t *pty, bool do_inversion, cs_real_t tensor[3][3]) |
Compute the value of the tensor attached to a property at the cell center. More... | |
cs_real_t | cs_property_get_cell_value (cs_lnum_t c_id, cs_real_t t_eval, const cs_property_t *pty) |
Compute the value of a property at the cell center. More... | |
void | cs_property_tensor_in_cell (const cs_cell_mesh_t *cm, const cs_property_t *pty, cs_real_t t_eval, bool do_inversion, cs_real_t tensor[3][3]) |
Compute the value of the tensor attached to a property at the cell center Version using a cs_cell_mesh_t structure. More... | |
cs_real_t | cs_property_value_in_cell (const cs_cell_mesh_t *cm, const cs_property_t *pty, cs_real_t t_eval) |
Compute the value of a property at the cell center Version using a cs_cell_mesh_t structure. More... | |
void | cs_property_c2v_values (const cs_cell_mesh_t *cm, const cs_property_t *pty, cs_real_t t_eval, cs_real_t *eval) |
Compute the values of an isotropic property in each portion of dual cell in a (primal) cell. This relies on the c2v connectivity. More... | |
void | cs_property_get_fourier (const cs_property_t *pty, cs_real_t t_eval, double dt, cs_real_t fourier[]) |
Compute the Fourier number in each cell. More... | |
void | cs_property_log_setup (void) |
Print a summary of the settings for all defined cs_property_t structures. More... | |
#define CS_PROPERTY_MASS_DENSITY "mass_density" |
typedef cs_flag_t cs_property_type_t |
enum cs_property_key_t |
cs_property_t* cs_property_add | ( | const char * | name, |
cs_property_type_t | type | ||
) |
Create and initialize a new property structure.
[in] | name | name of the property |
[in] | type | type of property |
cs_property_t* cs_property_add_as_product | ( | const char * | name, |
const cs_property_t * | pty_a, | ||
const cs_property_t * | pty_b | ||
) |
Define a cs_property_t structure thanks to the product of two properties The type is infered from that of the related properties The value of the property is given as: value_ab = value_a * value_b.
[in] | name | name of the property |
[in] | pty_a | pointer to a cs_property_t structure |
[in] | pty_b | pointer to a cs_property_t structure |
cs_property_t* cs_property_by_id | ( | int | id | ) |
Find the related property definition from its id.
[in] | id | id of the property to find |
cs_property_t* cs_property_by_name | ( | const char * | name | ) |
Find the related property definition from its name.
[in] | name | name of the property to find |
void cs_property_c2v_values | ( | const cs_cell_mesh_t * | cm, |
const cs_property_t * | pty, | ||
cs_real_t | t_eval, | ||
cs_real_t * | eval | ||
) |
Compute the values of an isotropic property in each portion of dual cell in a (primal) cell. This relies on the c2v connectivity.
[in] | cm | pointer to a cs_cell_mesh_t structure |
[in] | pty | pointer to a cs_property_t structure |
[in] | t_eval | physical time at which one evaluates the term |
[in,out] | eval | array of values storing the evaluation |
cs_property_data_t cs_property_data_define | ( | bool | need_tensor, |
bool | need_eigen, | ||
const cs_property_t * | property | ||
) |
Define a cs_property_data_t structure (not a pointer to this structure). If property is NULL then one considers that this is a unitary property.
[in] | need_tensor | true if one needs a tensor-valued evaluation |
[in] | need_eigen | true if one needs an evaluation of eigen values |
[in] | property | pointer to the cs_property_t structure |
void cs_property_data_init | ( | bool | need_tensor, |
bool | need_eigen, | ||
const cs_property_t * | property, | ||
cs_property_data_t * | data | ||
) |
Initialize a cs_property_data_t structure. If property is NULL then one considers that this is a unitary property.
[in] | need_tensor | true if one needs a tensor-valued evaluation |
[in] | need_eigen | true if one needs an evaluation of eigen values |
[in] | property | pointer to the cs_property_t structure |
[in,out] | data | structure to initialize (already allocated) |
cs_xdef_t* cs_property_def_aniso_by_value | ( | cs_property_t * | pty, |
const char * | zname, | ||
cs_real_t | tens[3][3] | ||
) |
Define an anisotropic cs_property_t structure by value for entities related to a volume zone.
[in,out] | pty | pointer to a cs_property_t structure |
[in] | zname | name of the associated zone (if NULL or "" all cells are considered) |
[in] | tens | values to set (3x3 tensor) |
cs_xdef_t* cs_property_def_aniso_sym_by_value | ( | cs_property_t * | pty, |
const char * | zname, | ||
cs_real_t | symtens[6] | ||
) |
Define an anisotropic cs_property_t structure by value for entities related to a volume zone.
[in,out] | pty | pointer to a cs_property_t structure |
[in] | zname | name of the associated zone (if NULL or "" all cells are considered) |
[in] | tens | values to set (3x3 tensor) |
[in,out] | pty | pointer to a cs_property_t structure |
[in] | zname | name of the associated zone (if NULL or "" all cells are considered) |
[in] | symtens | values to set (6 values – symmetric storage) |
cs_xdef_t* cs_property_def_by_analytic | ( | cs_property_t * | pty, |
const char * | zname, | ||
cs_analytic_func_t * | func, | ||
void * | input | ||
) |
Define a cs_property_t structure thanks to an analytic function in a subdomain attached to the mesh location named ml_name.
[in,out] | pty | pointer to a cs_property_t structure |
[in] | zname | name of the associated zone (if NULL or "" all cells are considered) |
[in] | func | pointer to a cs_analytic_func_t function |
[in] | input | NULL or pointer to a structure cast on-the-fly |
cs_xdef_t* cs_property_def_by_array | ( | cs_property_t * | pty, |
cs_flag_t | loc, | ||
cs_real_t * | array, | ||
bool | is_owner, | ||
const cs_lnum_t * | index, | ||
const cs_lnum_t * | ids | ||
) |
Define a cs_property_t structure thanks to an array of values.
[in,out] | pty | pointer to a cs_property_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 an array of index values |
[in] | ids | optional pointer to a list of entity ids |
void cs_property_def_by_field | ( | cs_property_t * | pty, |
cs_field_t * | field | ||
) |
Define a cs_property_t structure thanks to a field structure.
[in,out] | pty | pointer to a cs_property_t structure |
[in] | field | pointer to a cs_field_t structure |
cs_xdef_t* cs_property_def_by_func | ( | cs_property_t * | pty, |
const char * | zname, | ||
void * | context, | ||
cs_xdef_eval_t * | get_eval_at_cell, | ||
cs_xdef_cw_eval_t * | get_eval_at_cell_cw | ||
) |
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.
[in,out] | pty | pointer to a cs_property_t structure |
[in] | zname | name of the associated zone (if NULL or "" all cells are considered) |
[in] | context | pointer to a structure (may be NULL) |
[in] | get_eval_at_cell | pointer to a function |
[in] | get_eval_at_cell_cw | pointer to a function |
cs_xdef_t* cs_property_def_by_time_func | ( | cs_property_t * | pty, |
const char * | zname, | ||
cs_time_func_t * | func, | ||
void * | input | ||
) |
Define a cs_property_t structure thanks to an analytic function in a subdomain attached to the mesh location named ml_name.
[in,out] | pty | pointer to a cs_property_t structure |
[in] | zname | name of the associated zone (if NULL or "" all cells are considered) |
[in] | func | pointer to a cs_analytic_func_t function |
[in] | input | NULL or pointer to a structure cast on-the-fly |
cs_xdef_t* cs_property_def_constant_value | ( | cs_property_t * | pty, |
double | val | ||
) |
Define a single uniform and steady isotropic definition for the given cs_property_t structure. This is a specialized variant of cs_property_def_iso_by_value since several assumptions are satisfied.
[in,out] | pty | pointer to a cs_property_t structure |
[in] | val | value to set |
cs_xdef_t* cs_property_def_iso_by_value | ( | cs_property_t * | pty, |
const char * | zname, | ||
double | val | ||
) |
Define an isotropic cs_property_t structure by value for entities related to a volume zone.
[in,out] | pty | pointer to a cs_property_t structure |
[in] | zname | name of the associated zone (if NULL or "" all cells are considered) |
[in] | val | value to set |
cs_xdef_t* cs_property_def_ortho_by_value | ( | cs_property_t * | pty, |
const char * | zname, | ||
double | val[] | ||
) |
Define an orthotropic cs_property_t structure by value for entities related to a volume zone.
[in,out] | pty | pointer to a cs_property_t structure |
[in] | zname | name of the associated zone (if NULL or "" all cells are considered) |
[in] | val | values to set (vector of size 3) |
void cs_property_destroy_all | ( | void | ) |
Free all cs_property_t structures and the array storing all the structures.
void cs_property_eval_at_cells | ( | cs_real_t | t_eval, |
const cs_property_t * | pty, | ||
cs_real_t * | array | ||
) |
Evaluate the value of the property at each cell. Store the evaluation in the given array.
[in] | t_eval | physical time at which one evaluates the term |
[in] | pty | pointer to a cs_property_t structure |
[in,out] | array | pointer to an array of values (must be allocated) |
void cs_property_finalize_setup | ( | void | ) |
Last stage of the definition of a property based on several definitions (i.e. definition by subdomains)
void cs_property_get_cell_tensor | ( | cs_lnum_t | c_id, |
cs_real_t | t_eval, | ||
const cs_property_t * | pty, | ||
bool | do_inversion, | ||
cs_real_t | tensor[3][3] | ||
) |
Compute the value of the tensor attached to a property at the cell center.
[in] | c_id | id of the current cell |
[in] | t_eval | physical time at which one evaluates the term |
[in] | pty | pointer to a cs_property_t structure |
[in] | do_inversion | true or false |
[in,out] | tensor | 3x3 matrix |
Compute the value of the tensor attached to a property at the cell center.
[in] | c_id | id of the current cell |
[in] | t_eval | physical time at which one evaluates the term |
[in] | pty | pointer to a cs_property_t structure |
[in] | do_inversion | true or false |
[in,out] | tensor | 3x3 matrix |
cs_real_t cs_property_get_cell_value | ( | cs_lnum_t | c_id, |
cs_real_t | t_eval, | ||
const cs_property_t * | pty | ||
) |
Compute the value of a property at the cell center.
[in] | c_id | id of the current cell |
[in] | t_eval | physical time at which one evaluates the term |
[in] | pty | pointer to a cs_property_t structure |
|
inlinestatic |
Retrieve the dimension of the property.
[in] | pty | pointer to a property |
void cs_property_get_fourier | ( | const cs_property_t * | pty, |
cs_real_t | t_eval, | ||
double | dt, | ||
cs_real_t | fourier[] | ||
) |
Compute the Fourier number in each cell.
[in] | pty | pointer to the diffusive property struct. |
[in] | t_eval | physical time at which one evaluates the term |
[in] | dt | value of the current time step |
[in,out] | fourier | pointer to an array storing Fourier numbers |
int cs_property_get_n_properties | ( | void | ) |
Retrieve the number of properties.
|
inlinestatic |
Retrieve the name of a property.
[in] | pty | pointer to a property |
|
inlinestatic |
Retrieve the type of a property.
[in] | pty | pointer to a property |
void cs_property_init_sharing | ( | 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 |
returns true if the property is steady and uniform, otherwise false
[in] | pty | pointer to a property to test |
|
inlinestatic |
returns true if the property is isotropic, otherwise false
[in] | pty | pointer to a property to test |
|
inlinestatic |
returns true if the property is steady, otherwise false
[in] | pty | pointer to a property to test |
|
inlinestatic |
returns true if the property is allowed to be evaluated on a sub-partition of a cell
[in] | pty | pointer to a property to test |
|
inlinestatic |
returns true if the property is uniform, otherwise false
[in] | pty | pointer to a property to test |
void cs_property_iso_get_cell_values | ( | cs_real_t | t_eval, |
const cs_property_t * | pty, | ||
int * | pty_stride, | ||
cs_real_t ** | p_pty_vals | ||
) |
Evaluate the value of the property at each cell. Store the evaluation in the given array.
[in] | t_eval | physical time at which one evaluates the term |
[in] | pty | pointer to a cs_property_t structure |
[out] | pty_stride | = 0 if uniform, =1 otherwise |
[in,out] | pty_vals | pointer to an array of values. Allocated if not The size of the allocation depends on the value of the pty_stride |
void cs_property_log_setup | ( | void | ) |
Print a summary of the settings for all defined cs_property_t structures.
void cs_property_set_option | ( | cs_property_t * | pty, |
cs_property_key_t | key | ||
) |
Set optional parameters related to a cs_property_t structure.
[in,out] | pty | pointer to a cs_property_t structure |
[in] | key | key related to a setting option |
void cs_property_set_reference_value | ( | cs_property_t * | pty, |
double | refval | ||
) |
Set the reference value associated to a cs_property_t structure This is a real number even whatever the type of property is.
[in,out] | pty | pointer to a cs_property_t structure |
[in] | refval | value to set |
cs_property_t* cs_property_subcell_add | ( | const char * | name, |
cs_property_type_t | type | ||
) |
Create and initialize a new property structure with an evaluation which can be called on a sub-partition of a cell. This kind of property is not available for all numerical scheme. By default, only one evaluation is performed in each cell.
[in] | name | name of the property |
[in] | type | type of property |
void cs_property_tensor_in_cell | ( | const cs_cell_mesh_t * | cm, |
const cs_property_t * | pty, | ||
cs_real_t | t_eval, | ||
bool | do_inversion, | ||
cs_real_t | tensor[3][3] | ||
) |
Compute the value of the tensor attached to a property at the cell center Version using a cs_cell_mesh_t structure.
[in] | cm | pointer to a cs_cell_mesh_t structure |
[in] | pty | pointer to a cs_property_t structure |
[in] | t_eval | physical time at which one evaluates the term |
[in] | do_inversion | true or false |
[in,out] | tensor | 3x3 matrix |
cs_real_t cs_property_value_in_cell | ( | const cs_cell_mesh_t * | cm, |
const cs_property_t * | pty, | ||
cs_real_t | t_eval | ||
) |
Compute the value of a property at the cell center Version using a cs_cell_mesh_t structure.
[in] | cm | pointer to a cs_cell_mesh_t structure |
[in] | pty | pointer to a cs_property_t structure |
[in] | t_eval | physical time at which one evaluates the term |