#include "cs_defs.h"
#include <assert.h>
#include <ctype.h>
#include <float.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "bft_mem.h"
#include "cs_array.h"
#include "cs_log.h"
#include "cs_param_cdo.h"
#include "cs_reco.h"
#include "cs_volume_zone.h"
#include "cs_xdef_eval.h"
#include "cs_property.h"
Macros | |
#define | CS_PROPERTY_DBG 0 |
Functions | |
void | cs_property_init_sharing (const cs_mesh_t *mesh, 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_set_scaling_factor (cs_property_t *pty, double val) |
Set the scaling factor associated to a cs_property_t structure This is a real number whatever the type of property is. If the property was not defined as CS_PROPERTY_SCALED, then this tag is added. More... | |
void | cs_property_unscale (cs_property_t *pty) |
Set the scaling factor associated to a cs_property_t structure This is a real number whatever the type of property is. If the property was not defined as CS_PROPERTY_SCALED, then this tag is added. 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_real_t * | cs_property_get_array (const cs_property_t *pty) |
Retrieve the array associated to the volume definition for the given property. Available only if there is one definition by array for the volume. 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_boundary_def_iso_by_value (cs_property_t *pty, const char *zname, double val) |
Define the value at the boundary for the given (isotropic) property. This value is uniform and steady for all the boundary faces associated to the boundary zone named zname. 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_boundary_def_ortho_by_value (cs_property_t *pty, const char *zname, double vals[]) |
Define the value at the boundary for the given (orthotropic) property. This value is uniform and steady for all the boundary faces associated to the boundary zone named zname. 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_boundary_def_aniso_by_value (cs_property_t *pty, const char *zname, double tens[3][3]) |
Define the value at the boundary for the given (anisotropic) property. This value is uniform and steady for all the boundary faces associated to the boundary zone named zname. More... | |
cs_xdef_t * | cs_property_def_aniso_sym_by_value (cs_property_t *pty, const char *zname, cs_real_t symtens[6]) |
Define the value of a cs_property_t structure thanks to a time function for all cells associated to the zone named zname. Optimized case with a symmetric storage. More... | |
cs_xdef_t * | cs_property_boundary_def_aniso_sym_by_value (cs_property_t *pty, const char *zname, double tens[6]) |
Define the value at the boundary for the given (anisotropic) property. This value is uniform and steady for all the boundary faces associated to the boundary zone named zname Optimized case with a symmetric storage. 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 a time function for all cells associated to the zone named zname. More... | |
cs_xdef_t * | cs_property_boundary_def_by_time_func (cs_property_t *pty, const char *zname, cs_time_func_t *func, void *input) |
Define the value of a cs_property_t structure at the boundary thanks to a time function in a subdomain attached to a zone named zname. 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 for all cells associated to the zone named zname. More... | |
cs_xdef_t * | cs_property_boundary_def_by_analytic (cs_property_t *pty, const char *zname, cs_analytic_func_t *func, void *input) |
Define the value of a cs_property_t structure at the boundary thanks to a time function for all boundary faces associated to the zone named zname. 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 the value of a cs_property_t structure thanks to low-level functions specifying how to evaluate the property in each cell (with cell-wise structures or not). This definition applies to all cells associated to the zone named zname. More... | |
cs_xdef_t * | cs_property_def_by_array (cs_property_t *pty, const char *zname, cs_flag_t val_location, cs_real_t *array, bool is_owner, bool full_length) |
Define a cs_property_t structure thanks to an array of values. If an advanced usage of the definition by array is needed, then call cs_xdef_array_set_adjacency and/or cs_xdef_array_set_sublist. More... | |
cs_xdef_t * | cs_property_boundary_def_by_array (cs_property_t *pty, const char *zname, cs_flag_t val_loc, cs_real_t *array, bool is_owner, bool full_length) |
Define the values of a property at the boundary thanks to an array. If an advanced usage of the definition by array is needed, then call cs_xdef_array_set_adjacency and/or cs_xdef_array_set_sublist. More... | |
cs_xdef_t * | cs_property_def_by_field (cs_property_t *pty, cs_field_t *field) |
Define a cs_property_t structure thanks to a field structure. One assumes that all cells are defined using this array. More... | |
cs_xdef_t * | cs_property_boundary_def_by_field (cs_property_t *pty, cs_field_t *field) |
Define the values of a property at the boundary thanks to a field structure. One assumes that all boundary faces are defined using this array. More... | |
void | cs_property_evaluate_def (const cs_property_t *pty, int def_id, bool dense_output, double t_eval, cs_real_t *eval) |
Evaluate the values of the property at cells from the given definition. According to the parameter "dense_ouput", the "eval" array should be allocated with a size equal to pty->dim*n_cells (where "dim" depends on the type of property to handle) when no dense ouput is requested. Otherwise, an allocation size equal to pty->dim * the number of cells associated to the definition "def" is enough. More... | |
void | cs_property_evaluate_boundary_def (const cs_property_t *pty, int def_id, bool dense_output, double t_eval, cs_real_t *array) |
Evaluate the values of a property at boundary faces from the given boundary definition. If a dense ouput is not requested, then the size of the resulting array should be allocated at least to pty->dim * n_b_faces. Otherwise, n_b_faces can be replaced by the number of boundary faces associated to the current definition. 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_eval_at_boundary_faces (cs_real_t t_eval, const cs_property_t *pty, cs_real_t *array) |
Evaluate the value of the property at each boundary face. Store the result of 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 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... | |
cs_real_t | cs_property_get_face_value (cs_lnum_t f_id, cs_real_t t_eval, const cs_property_t *pty) |
Compute the value of a property at the face center by analytic if possible or by averaging value at cells center. 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... | |
Variables | |
static const char | _err_empty_pty [] |
static const cs_cdo_quantities_t * | cs_cdo_quant |
static const cs_cdo_connect_t * | cs_cdo_connect |
static const cs_mesh_t * | cs_mesh |
static int | _n_properties = 0 |
static int | _n_max_properties = 0 |
static cs_property_t ** | _properties = nullptr |
#define CS_PROPERTY_DBG 0 |
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_xdef_t * cs_property_boundary_def_aniso_by_value | ( | cs_property_t * | pty, |
const char * | zname, | ||
double | tens[3][3] | ||
) |
Define the value at the boundary for the given (anisotropic) property. This value is uniform and steady for all the boundary faces associated to the boundary zone named zname.
[in,out] | pty | pointer to a cs_property_t structure |
[in] | zname | name of the associated zone (if null or "" all boundary faces are considered) |
[in] | tens | values to set given as a 3x3 tensor |
cs_xdef_t * cs_property_boundary_def_aniso_sym_by_value | ( | cs_property_t * | pty, |
const char * | zname, | ||
double | tens[6] | ||
) |
Define the value at the boundary for the given (anisotropic) property. This value is uniform and steady for all the boundary faces associated to the boundary zone named zname Optimized case with a symmetric storage.
[in,out] | pty | pointer to a cs_property_t structure |
[in] | zname | name of the associated zone (if null or "" all boundary faces are considered) |
[in] | tens | tensor to set given as an array of 6 values |
cs_xdef_t * cs_property_boundary_def_by_analytic | ( | cs_property_t * | pty, |
const char * | zname, | ||
cs_analytic_func_t * | func, | ||
void * | input | ||
) |
Define the value of a cs_property_t structure at the boundary thanks to a time function for all boundary faces associated to the zone named zname.
[in,out] | pty | pointer to a cs_property_t structure |
[in] | zname | name of the associated zone (if null or "" all boundary faces 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_boundary_def_by_array | ( | cs_property_t * | pty, |
const char * | zname, | ||
cs_flag_t | val_loc, | ||
cs_real_t * | array, | ||
bool | is_owner, | ||
bool | full_length | ||
) |
Define the values of a property at the boundary thanks to an array. If an advanced usage of the definition by array is needed, then call cs_xdef_array_set_adjacency and/or cs_xdef_array_set_sublist.
[in,out] | pty | pointer to a cs_property_t structure |
[in] | zname | null or name of the boundary zone |
[in] | val_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 struct. (true or false) |
[in] | full_length | if true, the size of "array" should be allocated to the total numbers of entities related to the given location. If false, a new list is allocated and filled with the related subset indirection. |
cs_xdef_t * cs_property_boundary_def_by_field | ( | cs_property_t * | pty, |
cs_field_t * | field | ||
) |
Define the values of a property at the boundary thanks to a field structure. One assumes that all boundary faces are defined using this array.
[in,out] | pty | pointer to a cs_property_t structure |
[in] | field | pointer to a cs_field_t structure |
cs_xdef_t * cs_property_boundary_def_by_time_func | ( | cs_property_t * | pty, |
const char * | zname, | ||
cs_time_func_t * | func, | ||
void * | input | ||
) |
Define the value of a cs_property_t structure at the boundary thanks to a time function in a subdomain attached to a zone named zname.
[in,out] | pty | pointer to a cs_property_t structure |
[in] | zname | name of the associated zone (if null or "" all boundary faces are considered) |
[in] | func | pointer to a cs_time_func_t function |
[in] | input | null or pointer to a structure cast on-the-fly |
cs_xdef_t * cs_property_boundary_def_iso_by_value | ( | cs_property_t * | pty, |
const char * | zname, | ||
double | val | ||
) |
Define the value at the boundary for the given (isotropic) property. This value is uniform and steady for all the boundary faces associated to the boundary zone named zname.
[in,out] | pty | pointer to a cs_property_t structure |
[in] | zname | name of the associated zone (if null or "" all boundary faces are considered) |
[in] | val | value to set |
cs_xdef_t * cs_property_boundary_def_ortho_by_value | ( | cs_property_t * | pty, |
const char * | zname, | ||
double | vals[] | ||
) |
Define the value at the boundary for the given (orthotropic) property. This value is uniform and steady for all the boundary faces associated to the boundary zone named zname.
[in,out] | pty | pointer to a cs_property_t structure |
[in] | zname | name of the associated zone (if null or "" all boundary faces are considered) |
[in] | vals | values to set |
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 the value of a cs_property_t structure thanks to a time function for all cells associated to the zone named zname. Optimized case with a symmetric storage.
[in,out] | pty | pointer to a cs_property_t structure |
[in] | zname | name of the associated zone (if null or "" all boundary faces are considered) |
[in] | symtens | symmetric tensor given as an array of 6 values |
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 for all cells associated to the zone named zname.
Define the value of a cs_property_t structure thanks to an analytic function for all cells associated to the zone named zname.
[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, |
const char * | zname, | ||
cs_flag_t | val_location, | ||
cs_real_t * | array, | ||
bool | is_owner, | ||
bool | full_length | ||
) |
Define a cs_property_t structure thanks to an array of values. If an advanced usage of the definition by array is needed, then call cs_xdef_array_set_adjacency and/or cs_xdef_array_set_sublist.
[in,out] | pty | pointer to a cs_property_t structure |
[in] | zname | name of the zone (if null or "" then all cells are selected) |
[in] | val_location | information to know where are located values |
[in] | array | pointer to an array |
[in] | is_owner | transfer the lifecycle to the cs_xdef_t struc. (true or false) |
[in] | full_length | if true, the size of "array" is allocated to the total numbers of entities related to the given location. If false, a new list is allocated and filled with the related subset indirection. |
cs_xdef_t * cs_property_def_by_field | ( | cs_property_t * | pty, |
cs_field_t * | field | ||
) |
Define a cs_property_t structure thanks to a field structure. One assumes that all cells are defined using this array.
[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 the value of a cs_property_t structure thanks to low-level functions specifying how to evaluate the property in each cell (with cell-wise structures or not). This definition applies to all cells associated to the zone named zname.
[in,out] | pty | pointer to a cs_property_t structure |
[in] | zname | name of the zone (if null or "" then all cells are selected) |
[in] | context | pointer to a structure (may be nullptr) |
[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 a time function for all cells associated to the zone named zname.
[in,out] | pty | pointer to a cs_property_t structure |
[in] | zname | name of the associated zone (if nullptr or "" all cells are considered) |
[in] | func | pointer to a cs_time_func_t function |
[in] | input | nullptr 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_boundary_faces | ( | cs_real_t | t_eval, |
const cs_property_t * | pty, | ||
cs_real_t * | array | ||
) |
Evaluate the value of the property at each boundary face. Store the result of 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_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_evaluate_boundary_def | ( | const cs_property_t * | pty, |
int | def_id, | ||
bool | dense_output, | ||
double | t_eval, | ||
cs_real_t * | array | ||
) |
Evaluate the values of a property at boundary faces from the given boundary definition. If a dense ouput is not requested, then the size of the resulting array should be allocated at least to pty->dim * n_b_faces. Otherwise, n_b_faces can be replaced by the number of boundary faces associated to the current definition.
No scaling is applied to the value. This should be done with a higher level function like cs_property_eval_at_boundary_faces
[in] | pty | pointer to a cs_property_t structure |
[in] | def_id | id associated to the definition |
[in] | dense_output | true/false |
[in] | t_eval | time at which one performs the evaluation |
[in,out] | array | array storing the result of the evaluation(s) |
void cs_property_evaluate_def | ( | const cs_property_t * | pty, |
int | def_id, | ||
bool | dense_output, | ||
double | t_eval, | ||
cs_real_t * | eval | ||
) |
Evaluate the values of the property at cells from the given definition. According to the parameter "dense_ouput", the "eval" array should be allocated with a size equal to pty->dim*n_cells (where "dim" depends on the type of property to handle) when no dense ouput is requested. Otherwise, an allocation size equal to pty->dim * the number of cells associated to the definition "def" is enough.
No scaling is applied to the value. This should be done with a higher level function like cs_property_eval_at_cells or cs_property_get_cell_tensor
[in] | pty | pointer to a property structure |
[in] | def_id | id associated to the definition |
[in] | dense_output | true/false |
[in] | t_eval | time at which one performs the evaluation |
[in,out] | eval | array storing the result of the evaluations |
void cs_property_finalize_setup | ( | void | ) |
Last stage of the definition of a property based on several definitions (i.e. definition by subdomains)
cs_real_t * cs_property_get_array | ( | const cs_property_t * | pty | ) |
Retrieve the array associated to the volume definition for the given property. Available only if there is one definition by array for the volume.
[in] | pty | pointer to the property structure |
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 a property at the cell center.
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 |
cs_real_t cs_property_get_face_value | ( | cs_lnum_t | f_id, |
cs_real_t | t_eval, | ||
const cs_property_t * | pty | ||
) |
Compute the value of a property at the face center by analytic if possible or by averaging value at cells center.
Compute the value of a property at the face center.
[in] | f_id | id of the current face |
[in] | t_eval | physical time at which one evaluates the term |
[in] | pty | pointer to a cs_property_t structure |
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.
void cs_property_init_sharing | ( | const cs_mesh_t * | mesh, |
const cs_cdo_quantities_t * | quant, | ||
const cs_cdo_connect_t * | connect | ||
) |
Set shared pointers to main domain members.
[in] | mesh | mesh structure shared between FV and CDO |
[in] | quant | additional mesh quantities struct. |
[in] | connect | pointer to a cs_cdo_connect_t struct. |
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] | p_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 |
void cs_property_set_scaling_factor | ( | cs_property_t * | pty, |
double | val | ||
) |
Set the scaling factor associated to a cs_property_t structure This is a real number whatever the type of property is. If the property was not defined as CS_PROPERTY_SCALED, then this tag is added.
[in,out] | pty | pointer to a cs_property_t structure |
[in] | val | 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 |
void cs_property_unscale | ( | cs_property_t * | pty | ) |
Set the scaling factor associated to a cs_property_t structure This is a real number whatever the type of property is. If the property was not defined as CS_PROPERTY_SCALED, then this tag is added.
[in,out] | pty | pointer to a cs_property_t structure |
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 |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |