|
programmer's documentation
|
#include "cs_base.h"#include "cs_time_step.h"#include "cs_mesh.h"#include "cs_equation_common.h"#include "cs_equation_param.h"#include "cs_field.h"#include "cs_cdo_connect.h"#include "cs_cdo_quantities.h"#include "cs_restart.h"#include "cs_source_term.h"
Go to the source code of this file.
Typedefs | |
| typedef struct _cs_cdovcb_scaleq_t | cs_cdovcb_scaleq_t |
Functions | |
| bool | cs_cdovcb_scaleq_is_initialized (void) |
| Check if the generic structures for building a CDO-vertex+cell based scheme are allocated. More... | |
| void | cs_cdovcb_scaleq_init_common (const cs_cdo_quantities_t *quant, const cs_cdo_connect_t *connect, const cs_time_step_t *time_step, const cs_matrix_structure_t *ms) |
| Allocate work buffer and general structures related to CDO vertex+cell-based schemes Set shared pointers. More... | |
| void | cs_cdovcb_scaleq_get (cs_cell_sys_t **csys, cs_cell_builder_t **cb) |
| Retrieve work buffers used for building a CDO system cellwise. More... | |
| void | cs_cdovcb_scaleq_finalize_common (void) |
| Free buffers and generic structures related to CDO vertex+cell-based schemes. More... | |
| void * | cs_cdovcb_scaleq_init_context (const cs_equation_param_t *eqp, int var_id, int bflux_id, cs_equation_builder_t *eqb) |
| Initialize a cs_cdovcb_scaleq_t structure storing data useful for building and managing such a scheme. More... | |
| void * | cs_cdovcb_scaleq_free_context (void *data) |
| Destroy a cs_cdovcb_scaleq_t structure. More... | |
| void | cs_cdovcb_scaleq_initialize_system (const cs_equation_param_t *eqp, cs_equation_builder_t *eqb, void *context, cs_matrix_t **system_matrix, cs_real_t **system_rhs) |
| Create the matrix of the current algebraic system. Allocate and initialize the right-hand side associated to the given data structure. More... | |
| void | cs_cdovcb_scaleq_set_dir_bc (const cs_mesh_t *mesh, const cs_equation_param_t *eqp, cs_equation_builder_t *eqb, cs_real_t t_eval, cs_real_t field_val[]) |
| Set the boundary conditions known from the settings when the fields stem from a scalar CDO vertex+cell-based scheme. More... | |
| void | cs_cdovcb_scaleq_solve_steady_state (double dt_cur, const cs_mesh_t *mesh, const int field_id, const cs_equation_param_t *eqp, cs_equation_builder_t *eqb, void *context) |
| Build and solve the linear system arising from a scalar steady-state convection/diffusion/reaction equation with a CDO-VCb scheme One works cellwise and then process to the assembly. More... | |
| void | cs_cdovcb_scaleq_solve_implicit (double dt_cur, const cs_mesh_t *mesh, const int field_id, const cs_equation_param_t *eqp, cs_equation_builder_t *eqb, void *context) |
| Build and solve the linear system arising from a scalar unsteady convection/diffusion/reaction equation with a CDO-VCb scheme Time scheme is an implicit Euler One works cellwise and then process to the assembly. More... | |
| void | cs_cdovcb_scaleq_solve_theta (double dt_cur, const cs_mesh_t *mesh, const int field_id, const cs_equation_param_t *eqp, cs_equation_builder_t *eqb, void *context) |
| Build and solve the linear system arising from a scalar unsteady convection/diffusion/reaction equation with a CDO-VCb scheme Time scheme is a theta scheme. One works cellwise and then process to the assembly. More... | |
| void | cs_cdovcb_scaleq_build_system (const cs_mesh_t *mesh, const cs_real_t *field_val, double dt_cur, const cs_equation_param_t *eqp, cs_equation_builder_t *eqb, void *data, cs_real_t *rhs, cs_matrix_t *matrix) |
| Build the linear system arising from a scalar convection/diffusion equation with a CDO vertex+cell-based scheme. One works cellwise and then process to the assembly. More... | |
| void | cs_cdovcb_scaleq_update_field (const cs_real_t *solu, const cs_real_t *rhs, const cs_equation_param_t *eqp, cs_equation_builder_t *eqb, void *data, cs_real_t *field_val) |
| Store solution(s) of the linear system into a field structure Update extra-field values if required (for hybrid discretization) More... | |
| cs_real_t * | cs_cdovcb_scaleq_get_vertex_values (void *context) |
| Retrieve an array of values at mesh vertices for the variable field associated to the given context The lifecycle of this array is managed by the code. So one does not have to free the return pointer. More... | |
| cs_real_t * | cs_cdovcb_scaleq_get_cell_values (void *context) |
| Get the computed values at mesh cells from the inverse operation w.r.t. the static condensation (DoF used in the linear system are located at primal vertices and field related to the structure equation is also attached to primal vertices) The lifecycle of this array is managed by the code. So one does not have to free the return pointer. More... | |
| void | cs_cdovcb_scaleq_compute_flux_across_plane (const cs_real_t normal[], const cs_real_t *pdi, int ml_id, const cs_equation_param_t *eqp, cs_equation_builder_t *eqb, void *data, double *d_flux, double *c_flux) |
| Compute the diffusive and convective flux across a list of faces. More... | |
| void | cs_cdovcb_scaleq_cellwise_diff_flux (const cs_real_t *values, const cs_equation_param_t *eqp, cs_real_t t_eval, cs_equation_builder_t *eqb, void *context, cs_flag_t location, cs_real_t *diff_flux) |
| Cellwise computation of the diffusive flux. More... | |
| void | cs_cdovcb_scaleq_vtx_gradient (const cs_real_t *v_values, cs_equation_builder_t *eqb, void *context, cs_real_t *v_gradient) |
| Cellwise computation of the discrete gradient at vertices. More... | |
| void | cs_cdovcb_scaleq_read_restart (cs_restart_t *restart, const char *eqname, void *scheme_context) |
| Read additional arrays (not defined as fields) but useful for the checkpoint/restart process. More... | |
| void | cs_cdovcb_scaleq_write_restart (cs_restart_t *restart, const char *eqname, void *scheme_context) |
| Write additional arrays (not defined as fields) but useful for the checkpoint/restart process. More... | |
| void | cs_cdovcb_scaleq_extra_op (const char *eqname, const cs_field_t *field, const cs_equation_param_t *eqp, cs_equation_builder_t *eqb, void *context) |
| Predefined extra-operations related to this equation. More... | |
| typedef struct _cs_cdovcb_scaleq_t cs_cdovcb_scaleq_t |
| void cs_cdovcb_scaleq_build_system | ( | const cs_mesh_t * | mesh, |
| const cs_real_t * | field_val, | ||
| double | dt_cur, | ||
| const cs_equation_param_t * | eqp, | ||
| cs_equation_builder_t * | eqb, | ||
| void * | data, | ||
| cs_real_t * | rhs, | ||
| cs_matrix_t * | matrix | ||
| ) |
Build the linear system arising from a scalar convection/diffusion equation with a CDO vertex+cell-based scheme. One works cellwise and then process to the assembly.
| [in] | mesh | pointer to a cs_mesh_t structure |
| [in] | field_val | pointer to the current value of the vertex field |
| [in] | dt_cur | current value of the time step |
| [in] | eqp | pointer to a cs_equation_param_t structure |
| [in,out] | eqb | pointer to a cs_equation_builder_t structure |
| [in,out] | data | pointer to cs_cdovcb_scaleq_t structure |
| [in,out] | rhs | right-hand side |
| [in,out] | matrix | pointer to cs_matrix_t structure to compute |
| void cs_cdovcb_scaleq_cellwise_diff_flux | ( | const cs_real_t * | values, |
| const cs_equation_param_t * | eqp, | ||
| cs_real_t | t_eval, | ||
| cs_equation_builder_t * | eqb, | ||
| void * | context, | ||
| cs_flag_t | location, | ||
| cs_real_t * | diff_flux | ||
| ) |
Cellwise computation of the diffusive flux.
| [in] | values | discrete values for the potential |
| [in] | eqp | pointer to a cs_equation_param_t structure |
| [in] | t_eval | time at which one performs the evaluation |
| [in,out] | eqb | pointer to a cs_equation_builder_t structure |
| [in,out] | context | pointer to data structure cast on-the-fly |
| [in,out] | location | where the flux is defined |
| [in,out] | diff_flux | value of the diffusive flux |
| void cs_cdovcb_scaleq_compute_flux_across_plane | ( | const cs_real_t | normal[], |
| const cs_real_t * | pdi, | ||
| int | ml_id, | ||
| const cs_equation_param_t * | eqp, | ||
| cs_equation_builder_t * | eqb, | ||
| void * | data, | ||
| double * | d_flux, | ||
| double * | c_flux | ||
| ) |
Compute the diffusive and convective flux across a list of faces.
| [in] | normal | indicate in which direction flux is > 0 |
| [in] | pdi | pointer to an array of field values |
| [in] | ml_id | id related to a cs_mesh_location_t struct. |
| [in] | eqp | pointer to a cs_equation_param_t structure |
| [in,out] | eqb | pointer to a cs_equation_builder_t structure |
| [in,out] | data | pointer to data specific for this scheme |
| [in,out] | d_flux | pointer to the value of the diffusive flux |
| [in,out] | c_flux | pointer to the value of the convective flux |
| void cs_cdovcb_scaleq_extra_op | ( | const char * | eqname, |
| const cs_field_t * | field, | ||
| const cs_equation_param_t * | eqp, | ||
| cs_equation_builder_t * | eqb, | ||
| void * | context | ||
| ) |
Predefined extra-operations related to this equation.
| [in] | eqname | name of the equation |
| [in] | field | pointer to a field structure |
| [in] | eqp | pointer to a cs_equation_param_t structure |
| [in,out] | eqb | pointer to a cs_equation_builder_t structure |
| [in,out] | context | pointer to cs_cdovcb_scaleq_t structure |
| void cs_cdovcb_scaleq_finalize_common | ( | void | ) |
Free buffers and generic structures related to CDO vertex+cell-based schemes.
Free buffers and generic structures related to CDO vertex+cell-based schemes.
| void* cs_cdovcb_scaleq_free_context | ( | void * | data | ) |
Destroy a cs_cdovcb_scaleq_t structure.
| [in,out] | data | pointer to a cs_cdovcb_scaleq_t structure |
| void cs_cdovcb_scaleq_get | ( | cs_cell_sys_t ** | csys, |
| cs_cell_builder_t ** | cb | ||
| ) |
Retrieve work buffers used for building a CDO system cellwise.
| [out] | csys | pointer to a pointer on a cs_cell_sys_t structure |
| [out] | cb | pointer to a pointer on a cs_cell_builder_t structure |
| cs_real_t* cs_cdovcb_scaleq_get_cell_values | ( | void * | context | ) |
Get the computed values at mesh cells from the inverse operation w.r.t. the static condensation (DoF used in the linear system are located at primal vertices and field related to the structure equation is also attached to primal vertices) The lifecycle of this array is managed by the code. So one does not have to free the return pointer.
| [in,out] | context | pointer to a data structure cast on-the-fly |
| cs_real_t* cs_cdovcb_scaleq_get_vertex_values | ( | void * | context | ) |
Retrieve an array of values at mesh vertices for the variable field associated to the given context The lifecycle of this array is managed by the code. So one does not have to free the return pointer.
| [in,out] | context | pointer to a data structure cast on-the-fly |
| void cs_cdovcb_scaleq_init_common | ( | const cs_cdo_quantities_t * | quant, |
| const cs_cdo_connect_t * | connect, | ||
| const cs_time_step_t * | time_step, | ||
| const cs_matrix_structure_t * | ms | ||
| ) |
Allocate work buffer and general structures related to CDO vertex+cell-based schemes Set shared pointers.
| [in] | quant | additional mesh quantities struct. |
| [in] | connect | pointer to a cs_cdo_connect_t struct. |
| [in] | time_step | pointer to a time step structure |
| [in] | ms | pointer to a cs_matrix_structure_t structure |
| void* cs_cdovcb_scaleq_init_context | ( | const cs_equation_param_t * | eqp, |
| int | var_id, | ||
| int | bflux_id, | ||
| cs_equation_builder_t * | eqb | ||
| ) |
Initialize a cs_cdovcb_scaleq_t structure storing data useful for building and managing such a scheme.
| [in] | eqp | pointer to a cs_equation_param_t structure |
| [in] | var_id | id of the variable field |
| [in] | bflux_id | id of the boundary flux field |
| [in,out] | eqb | pointer to a cs_equation_builder_t structure |
| void cs_cdovcb_scaleq_initialize_system | ( | const cs_equation_param_t * | eqp, |
| cs_equation_builder_t * | eqb, | ||
| void * | context, | ||
| cs_matrix_t ** | system_matrix, | ||
| cs_real_t ** | system_rhs | ||
| ) |
Create the matrix of the current algebraic system. Allocate and initialize the right-hand side associated to the given data structure.
| [in] | eqp | pointer to a cs_equation_param_t structure |
| [in,out] | eqb | pointer to a cs_equation_builder_t structure |
| [in,out] | context | pointer to cs_cdovcb_scaleq_t structure |
| [in,out] | system_matrix | pointer of pointer to a cs_matrix_t struct. |
| [in,out] | system_rhs | pointer of pointer to an array of double |
| bool cs_cdovcb_scaleq_is_initialized | ( | void | ) |
Check if the generic structures for building a CDO-vertex+cell based scheme are allocated.
| void cs_cdovcb_scaleq_read_restart | ( | cs_restart_t * | restart, |
| const char * | eqname, | ||
| void * | scheme_context | ||
| ) |
Read additional arrays (not defined as fields) but useful for the checkpoint/restart process.
| [in,out] | restart | pointer to cs_restart_t structure |
| [in] | eqname | name of the related equation |
| [in] | scheme_context | pointer to a data structure cast on-the-fly |
| void cs_cdovcb_scaleq_set_dir_bc | ( | const cs_mesh_t * | mesh, |
| const cs_equation_param_t * | eqp, | ||
| cs_equation_builder_t * | eqb, | ||
| cs_real_t | t_eval, | ||
| cs_real_t | field_val[] | ||
| ) |
Set the boundary conditions known from the settings when the fields stem from a scalar CDO vertex+cell-based scheme.
| [in] | mesh | pointer to a cs_mesh_t structure |
| [in] | eqp | pointer to a cs_equation_param_t structure |
| [in,out] | eqb | pointer to a cs_equation_builder_t structure |
| [in] | t_eval | time at which one evaluates BCs |
| [in,out] | field_val | pointer to the values of the variable field |
| void cs_cdovcb_scaleq_solve_implicit | ( | double | dt_cur, |
| const cs_mesh_t * | mesh, | ||
| const int | field_id, | ||
| const cs_equation_param_t * | eqp, | ||
| cs_equation_builder_t * | eqb, | ||
| void * | context | ||
| ) |
Build and solve the linear system arising from a scalar unsteady convection/diffusion/reaction equation with a CDO-VCb scheme Time scheme is an implicit Euler One works cellwise and then process to the assembly.
| [in] | dt_cur | current value of the time step |
| [in] | mesh | pointer to a cs_mesh_t structure |
| [in] | field_id | id of the variable field related to this equation |
| [in] | eqp | pointer to a cs_equation_param_t structure |
| [in,out] | eqb | pointer to a cs_equation_builder_t structure |
| [in,out] | context | pointer to cs_cdovcb_scaleq_t structure |
| void cs_cdovcb_scaleq_solve_steady_state | ( | double | dt_cur, |
| const cs_mesh_t * | mesh, | ||
| const int | field_id, | ||
| const cs_equation_param_t * | eqp, | ||
| cs_equation_builder_t * | eqb, | ||
| void * | context | ||
| ) |
Build and solve the linear system arising from a scalar steady-state convection/diffusion/reaction equation with a CDO-VCb scheme One works cellwise and then process to the assembly.
| [in] | dt_cur | current value of the time step |
| [in] | mesh | pointer to a cs_mesh_t structure |
| [in] | field_id | id of the variable field related to this equation |
| [in] | eqp | pointer to a cs_equation_param_t structure |
| [in,out] | eqb | pointer to a cs_equation_builder_t structure |
| [in,out] | context | pointer to cs_cdofb_scaleq_t structure |
| [in] | dt_cur | current value of the time step |
| [in] | mesh | pointer to a cs_mesh_t structure |
| [in] | field_id | id of the variable field related to this equation |
| [in] | eqp | pointer to a cs_equation_param_t structure |
| [in,out] | eqb | pointer to a cs_equation_builder_t structure |
| [in,out] | context | pointer to cs_cdovcb_scaleq_t structure |
| void cs_cdovcb_scaleq_solve_theta | ( | double | dt_cur, |
| const cs_mesh_t * | mesh, | ||
| const int | field_id, | ||
| const cs_equation_param_t * | eqp, | ||
| cs_equation_builder_t * | eqb, | ||
| void * | context | ||
| ) |
Build and solve the linear system arising from a scalar unsteady convection/diffusion/reaction equation with a CDO-VCb scheme Time scheme is a theta scheme. One works cellwise and then process to the assembly.
| [in] | dt_cur | current value of the time step |
| [in] | mesh | pointer to a cs_mesh_t structure |
| [in] | field_id | id of the variable field related to this equation |
| [in] | eqp | pointer to a cs_equation_param_t structure |
| [in,out] | eqb | pointer to a cs_equation_builder_t structure |
| [in,out] | context | pointer to cs_cdovcb_scaleq_t structure |
| void cs_cdovcb_scaleq_update_field | ( | const cs_real_t * | solu, |
| const cs_real_t * | rhs, | ||
| const cs_equation_param_t * | eqp, | ||
| cs_equation_builder_t * | eqb, | ||
| void * | data, | ||
| cs_real_t * | field_val | ||
| ) |
Store solution(s) of the linear system into a field structure Update extra-field values if required (for hybrid discretization)
| [in] | solu | solution array |
| [in] | rhs | rhs associated to this solution array |
| [in] | eqp | pointer to a cs_equation_param_t structure |
| [in,out] | eqb | pointer to a cs_equation_builder_t structure |
| [in,out] | data | pointer to data structure |
| [in,out] | field_val | pointer to the current value of the field |
| void cs_cdovcb_scaleq_vtx_gradient | ( | const cs_real_t * | v_values, |
| cs_equation_builder_t * | eqb, | ||
| void * | context, | ||
| cs_real_t * | v_gradient | ||
| ) |
Cellwise computation of the discrete gradient at vertices.
| [in] | v_values | discrete values for the potential at vertices |
| [in,out] | eqb | pointer to a cs_equation_builder_t structure |
| [in,out] | context | pointer to data structure cast on-the-fly |
| [in,out] | v_gradient | gradient at vertices |
| void cs_cdovcb_scaleq_write_restart | ( | cs_restart_t * | restart, |
| const char * | eqname, | ||
| void * | scheme_context | ||
| ) |
Write additional arrays (not defined as fields) but useful for the checkpoint/restart process.
| [in,out] | restart | pointer to cs_restart_t structure |
| [in] | eqname | name of the related equation |
| [in] | scheme_context | pointer to a data structure cast on-the-fly |
1.8.13