![]() |
programmer's documentation
|
Build an algebraic CDO vertex-based system for unsteady convection-diffusion-reaction of scalar-valued equations with source terms. More...
#include "cs_defs.h"
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <float.h>
#include <assert.h>
#include <string.h>
#include <bft_mem.h>
#include "cs_cdo_advection.h"
#include "cs_cdo_bc.h"
#include "cs_cdo_diffusion.h"
#include "cs_cdo_local.h"
#include "cs_cdo_time.h"
#include "cs_equation_bc.h"
#include "cs_equation_common.h"
#include "cs_hodge.h"
#include "cs_log.h"
#include "cs_math.h"
#include "cs_mesh_location.h"
#include "cs_param.h"
#include "cs_post.h"
#include "cs_quadrature.h"
#include "cs_reco.h"
#include "cs_scheme_geometry.h"
#include "cs_search.h"
#include "cs_source_term.h"
#include "cs_timer.h"
#include "cs_cdovb_scaleq.h"
Functions | |
bool | cs_cdovb_scaleq_is_initialized (void) |
Check if the generic structures for building a CDO-Vb scheme are allocated. More... | |
void | cs_cdovb_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-based schemes Set shared pointers. More... | |
void | cs_cdovb_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_cdovb_scaleq_finalize_common (void) |
Free work buffer and general structure related to CDO vertex-based schemes. More... | |
void * | cs_cdovb_scaleq_init_context (const cs_equation_param_t *eqp, cs_equation_builder_t *eqb) |
Initialize a cs_cdovb_scaleq_t structure storing data useful for managing such a scheme. More... | |
void * | cs_cdovb_scaleq_free_context (void *builder) |
Destroy a cs_cdovb_scaleq_t structure. More... | |
void | cs_cdovb_scaleq_compute_source (const cs_equation_param_t *eqp, cs_equation_builder_t *eqb, void *data) |
Compute the contributions of source terms (store inside builder) More... | |
void | cs_cdovb_scaleq_initialize_system (const cs_equation_param_t *eqp, cs_equation_builder_t *eqb, void *data, 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 builder structure. More... | |
void | cs_cdovb_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-based scheme. One works cellwise and then process to the assembly. More... | |
void | cs_cdovb_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... | |
void | cs_cdovb_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_cdovb_scaleq_cellwise_diff_flux (const cs_real_t *values, const cs_equation_param_t *eqp, cs_equation_builder_t *eqb, void *data, cs_flag_t location, cs_real_t *diff_flux) |
Cellwise computation of the diffusive flux. More... | |
void | cs_cdovb_scaleq_extra_op (const char *eqname, const cs_field_t *field, const cs_equation_param_t *eqp, cs_equation_builder_t *eqb, void *data) |
Predefined extra-operations related to this equation. More... | |
Variables | |
static cs_cell_sys_t ** | cs_cdovb_cell_sys = NULL |
static cs_cell_builder_t ** | cs_cdovb_cell_bld = NULL |
static const cs_cdo_quantities_t * | cs_shared_quant |
static const cs_cdo_connect_t * | cs_shared_connect |
static const cs_time_step_t * | cs_shared_time_step |
static const cs_matrix_structure_t * | cs_shared_ms |
Build an algebraic CDO vertex-based system for unsteady convection-diffusion-reaction of scalar-valued equations with source terms.
void cs_cdovb_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-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_cdovb_scaleq_cellwise_diff_flux | ( | const cs_real_t * | values, |
const cs_equation_param_t * | eqp, | ||
cs_equation_builder_t * | eqb, | ||
void * | data, | ||
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,out] | eqb | pointer to a cs_equation_builder_t structure |
[in,out] | data | pointer to cs_cdovb_scaleq_t structure |
[in,out] | location | where the flux is defined |
[in,out] | diff_flux | value of the diffusive flux |
void cs_cdovb_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_cdovb_scaleq_compute_source | ( | const cs_equation_param_t * | eqp, |
cs_equation_builder_t * | eqb, | ||
void * | data | ||
) |
Compute the contributions of source terms (store inside builder)
[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_cdovb_scaleq_t structure |
void cs_cdovb_scaleq_extra_op | ( | const char * | eqname, |
const cs_field_t * | field, | ||
const cs_equation_param_t * | eqp, | ||
cs_equation_builder_t * | eqb, | ||
void * | data | ||
) |
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] | data | pointer to cs_cdovb_scaleq_t structure |
void cs_cdovb_scaleq_finalize_common | ( | void | ) |
Free work buffer and general structure related to CDO vertex-based schemes.
void* cs_cdovb_scaleq_free_context | ( | void * | builder | ) |
Destroy a cs_cdovb_scaleq_t structure.
[in,out] | builder | pointer to a cs_cdovb_scaleq_t structure |
void cs_cdovb_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 |
void cs_cdovb_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-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_cdovb_scaleq_init_context | ( | const cs_equation_param_t * | eqp, |
cs_equation_builder_t * | eqb | ||
) |
Initialize a cs_cdovb_scaleq_t structure storing data useful for managing such a scheme.
[in] | eqp | pointer to a cs_equation_param_t structure |
[in,out] | eqb | pointer to a cs_equation_builder_t structure |
void cs_cdovb_scaleq_initialize_system | ( | const cs_equation_param_t * | eqp, |
cs_equation_builder_t * | eqb, | ||
void * | data, | ||
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 builder structure.
[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_cdovb_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_cdovb_scaleq_is_initialized | ( | void | ) |
Check if the generic structures for building a CDO-Vb scheme are allocated.
void cs_cdovb_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 cs_cdovb_scaleq_t structure |
[in,out] | field_val | pointer to the current value of the field |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |