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 <assert.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <bft_mem.h>
#include "cs_array.h"
#include "cs_boundary_zone.h"
#include "cs_cdo_advection.h"
#include "cs_cdo_bc.h"
#include "cs_cdo_diffusion.h"
#include "cs_cdo_local.h"
#include "cs_cdo_solve.h"
#include "cs_cdo_system.h"
#include "cs_cdo_toolbox.h"
#include "cs_cdovb_priv.h"
#include "cs_equation_bc.h"
#include "cs_evaluate.h"
#include "cs_hodge.h"
#include "cs_log.h"
#include "cs_math.h"
#include "cs_mesh_location.h"
#include "cs_parall.h"
#include "cs_post.h"
#include "cs_quadrature.h"
#include "cs_reco.h"
#include "cs_scheme_geometry.h"
#include "cs_search.h"
#include "cs_sles.h"
#include "cs_source_term.h"
#include "cs_timer.h"
#include "cs_cdovb_scaleq.h"
Macros | |
#define | CS_CDOVB_SCALEQ_DBG 0 |
#define | _dp3 cs_math_3_dot_product |
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_sharing (const cs_cdo_quantities_t *quant, const cs_cdo_connect_t *connect, const cs_time_step_t *time_step) |
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_sharing (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, int var_id, int bflux_id, cs_equation_builder_t *eqb) |
Initialize a cs_cdovb_scaleq_t structure storing data useful for building and managing such a scheme. More... | |
void * | cs_cdovb_scaleq_free_context (void *scheme_context) |
Destroy a cs_cdovb_scaleq_t structure. More... | |
void | cs_cdovb_scaleq_setup (cs_real_t t_eval, const cs_mesh_t *mesh, const cs_equation_param_t *eqp, cs_equation_builder_t *eqb, cs_flag_t vtx_bc_flag[]) |
Set the boundary conditions known from the settings Define an indirection array for the enforcement of internal DoFs only if needed. Case of scalar-valued CDO-Vb schemes. More... | |
void | cs_cdovb_scaleq_init_properties (int t_id, cs_real_t t_eval, const cs_equation_param_t *eqp, cs_equation_builder_t *eqb, void *context) |
Set the main properties before the main loop on cells. Case of scalar-valued CDO-Vb schemes. More... | |
double | cs_cdovb_scaleq_build_block_implicit (int t_id, cs_lnum_t c_id, const cs_real_t f_val[], int row_id, int col_id, const cs_equation_param_t *eqp, cs_equation_builder_t *eqb, void *context, cs_cell_builder_t *cb, cs_cell_sys_t *csys) |
Build the cell system for the given cell id when the build occurs in a coupled system – block in (row_id, col_id) Case of scalar-valued CDO-Vb schemes. More... | |
void | cs_cdovb_scaleq_init_values (cs_real_t t_eval, const int field_id, const cs_mesh_t *mesh, const cs_equation_param_t *eqp, cs_equation_builder_t *eqb, void *context) |
Set the initial values of the variable field taking into account the boundary conditions. Case of scalar-valued CDO-Vb schemes. More... | |
void | cs_cdovb_scaleq_solve_steady_state (bool cur2prev, 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-Vb scheme One works cellwise and then process to the assembly. More... | |
void | cs_cdovb_scaleq_solve_steady_state_incr (bool cur2prev, 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-Vb scheme One works cellwise and then process to the assembly. More... | |
void | cs_cdovb_scaleq_solve_implicit (bool cur2prev, 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-Vb scheme Implicit time scheme is used to progress in time. One works cellwise and then process to the assembly. More... | |
void | cs_cdovb_scaleq_solve_implicit_incr (bool cur2prev, 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-Vb scheme Implicit time scheme is used to progress in time. One works cellwise and then process to the assembly. More... | |
void | cs_cdovb_scaleq_solve_theta (bool cur2prev, 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-Vb scheme Theta time scheme is used to progress in time. One works cellwise and then process to the assembly. More... | |
cs_real_t * | cs_cdovb_scaleq_get_vertex_values (void *context, bool previous) |
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_cdovb_scaleq_get_cell_values (void *context, bool previous) |
Compute an array of values at mesh cells by interpolating the variable field associated to the given context located at mesh vertices The lifecycle of this array is managed by the code. So one does not have to free the return pointer. More... | |
cs_cdo_balance_t * | cs_cdovb_scaleq_balance (const cs_equation_param_t *eqp, cs_equation_builder_t *eqb, void *context) |
Compute the balance for an equation over the full computational domain between time t_cur and t_cur + dt_cur Case of scalar-valued CDO vertex-based scheme. More... | |
void | cs_cdovb_scaleq_apply_stiffness (const cs_equation_param_t *eqp, cs_equation_builder_t *eqb, void *context, const cs_property_t *property, const cs_real_t *pot, cs_flag_t loc_res, cs_real_t *res) |
Compute the cellwise stiffness matrix associated to the property given as a parameter and apply it to the pot array to define the resulting array associated to entities defined at loc_res Case of scalar-valued CDO vertex-based scheme. More... | |
void | cs_cdovb_scaleq_boundary_diff_flux (const cs_real_t t_eval, const cs_equation_param_t *eqp, const cs_real_t *pdi, cs_equation_builder_t *eqb, void *context, cs_real_t *vf_flux) |
Compute for each vertex of a boundary face, the portion of diffusive flux across the boundary face. The surface attached to each vertex corresponds to the intersection of its dual cell (associated to a vertex of the face) with the face. Case of scalar-valued CDO-Vb schemes. More... | |
void | cs_cdovb_scaleq_flux_across_plane (const cs_real_t normal[], const cs_real_t *pdi, const cs_equation_param_t *eqp, int ml_id, cs_equation_builder_t *eqb, void *context, double *d_flux, double *c_flux) |
Compute the diffusive and convective flux across a list of faces Case of scalar-valued CDO-Vb schemes. More... | |
void | cs_cdovb_scaleq_diff_flux_in_cells (const cs_real_t *values, const cs_equation_param_t *eqp, cs_real_t t_eval, cs_equation_builder_t *eqb, void *context, cs_real_t *diff_flux) |
Cellwise computation of an approximation of a constant diffusive flux (a vector) in each cell. Case of scalar-valued CDO-Vb schemes. More... | |
void | cs_cdovb_scaleq_diff_flux_dfaces (const cs_real_t *values, const cs_equation_param_t *eqp, cs_real_t t_eval, cs_equation_builder_t *eqb, void *context, cs_real_t *diff_flux) |
Cellwise computation of the diffusive flux accross dual faces (a scalar) in each cell. Case of scalar-valued CDO-Vb schemes. More... | |
void | cs_cdovb_scaleq_current_to_previous (const cs_equation_param_t *eqp, cs_equation_builder_t *eqb, void *context) |
Operate a current to previous operation for the field associated to this equation and potentially for related fields/arrays. More... | |
void | cs_cdovb_scaleq_extra_post (const cs_equation_param_t *eqp, cs_equation_builder_t *eqb, void *context) |
Predefined extra-operations related to this equation. More... | |
Build an algebraic CDO vertex-based system for unsteady convection-diffusion-reaction of scalar-valued equations with source terms.
#define _dp3 cs_math_3_dot_product |
#define CS_CDOVB_SCALEQ_DBG 0 |
void cs_cdovb_scaleq_apply_stiffness | ( | const cs_equation_param_t * | eqp, |
cs_equation_builder_t * | eqb, | ||
void * | context, | ||
const cs_property_t * | property, | ||
const cs_real_t * | pot, | ||
cs_flag_t | loc_res, | ||
cs_real_t * | res | ||
) |
Compute the cellwise stiffness matrix associated to the property given as a parameter and apply it to the pot array to define the resulting array associated to entities defined at loc_res Case of scalar-valued CDO vertex-based scheme.
[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 a scheme builder structure |
[in] | property | pointer to the property related to the stiffness op. |
[in] | pot | array to multiply with the stiffness matrix |
[in] | loc_res | location of entities in the resulting array |
[in,out] | res | resulting array |
cs_cdo_balance_t* cs_cdovb_scaleq_balance | ( | const cs_equation_param_t * | eqp, |
cs_equation_builder_t * | eqb, | ||
void * | context | ||
) |
Compute the balance for an equation over the full computational domain between time t_cur and t_cur + dt_cur Case of scalar-valued CDO vertex-based scheme.
[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 a scheme builder structure |
void cs_cdovb_scaleq_boundary_diff_flux | ( | const cs_real_t | t_eval, |
const cs_equation_param_t * | eqp, | ||
const cs_real_t * | pdi, | ||
cs_equation_builder_t * | eqb, | ||
void * | context, | ||
cs_real_t * | vf_flux | ||
) |
Compute for each vertex of a boundary face, the portion of diffusive flux across the boundary face. The surface attached to each vertex corresponds to the intersection of its dual cell (associated to a vertex of the face) with the face. Case of scalar-valued CDO-Vb schemes.
[in] | t_eval | time at which one performs the evaluation |
[in] | eqp | pointer to a cs_equation_param_t structure |
[in] | pdi | pointer to an array of field values |
[in,out] | eqb | pointer to a cs_equation_builder_t structure |
[in,out] | context | pointer to a scheme builder structure |
[in,out] | vf_flux | pointer to the values of the diffusive flux |
double cs_cdovb_scaleq_build_block_implicit | ( | int | t_id, |
cs_lnum_t | c_id, | ||
const cs_real_t | f_val[], | ||
int | row_id, | ||
int | col_id, | ||
const cs_equation_param_t * | eqp, | ||
cs_equation_builder_t * | eqb, | ||
void * | context, | ||
cs_cell_builder_t * | cb, | ||
cs_cell_sys_t * | csys | ||
) |
Build the cell system for the given cell id when the build occurs in a coupled system – block in (row_id, col_id) Case of scalar-valued CDO-Vb schemes.
Warning: Treatment of BCs differs from the "standard" case. Up to now, one assumes a Dirichlet or a Neumann for all equations (i.e. all blocks) and only an algebraic treatment is performed.
[in] | t_id | thread id if openMP is used |
[in] | c_id | cell id |
[in] | f_val | current field values |
[in] | row_id | id related to the row block |
[in] | col_id | id related to the col block |
[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 a scheme context structure |
[in,out] | cb | cell builder structure |
[in,out] | csys | cell system structure |
void cs_cdovb_scaleq_current_to_previous | ( | const cs_equation_param_t * | eqp, |
cs_equation_builder_t * | eqb, | ||
void * | context | ||
) |
Operate a current to previous operation for the field associated to this equation and potentially for related fields/arrays.
[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_cdovb_scaleq_t structure |
void cs_cdovb_scaleq_diff_flux_dfaces | ( | const cs_real_t * | values, |
const cs_equation_param_t * | eqp, | ||
cs_real_t | t_eval, | ||
cs_equation_builder_t * | eqb, | ||
void * | context, | ||
cs_real_t * | diff_flux | ||
) |
Cellwise computation of the diffusive flux accross dual faces (a scalar) in each cell. Case of scalar-valued CDO-Vb schemes.
[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 cs_cdovb_scaleq_t structure |
[in,out] | diff_flux | values of the diffusive flux |
void cs_cdovb_scaleq_diff_flux_in_cells | ( | const cs_real_t * | values, |
const cs_equation_param_t * | eqp, | ||
cs_real_t | t_eval, | ||
cs_equation_builder_t * | eqb, | ||
void * | context, | ||
cs_real_t * | diff_flux | ||
) |
Cellwise computation of an approximation of a constant diffusive flux (a vector) in each cell. Case of scalar-valued CDO-Vb schemes.
[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 cs_cdovb_scaleq_t structure |
[in,out] | diff_flux | value of the diffusive flux |
void cs_cdovb_scaleq_extra_post | ( | const cs_equation_param_t * | eqp, |
cs_equation_builder_t * | eqb, | ||
void * | context | ||
) |
Predefined extra-operations 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_cdovb_scaleq_t structure |
void cs_cdovb_scaleq_finalize_sharing | ( | void | ) |
Free work buffer and general structure related to CDO vertex-based schemes.
void cs_cdovb_scaleq_flux_across_plane | ( | const cs_real_t | normal[], |
const cs_real_t * | pdi, | ||
const cs_equation_param_t * | eqp, | ||
int | ml_id, | ||
cs_equation_builder_t * | eqb, | ||
void * | context, | ||
double * | d_flux, | ||
double * | c_flux | ||
) |
Compute the diffusive and convective flux across a list of faces Case of scalar-valued CDO-Vb schemes.
[in] | normal | indicate in which direction flux is > 0 |
[in] | pdi | pointer to an array of field values |
[in] | eqp | pointer to a cs_equation_param_t structure |
[in] | ml_id | id related to a cs_mesh_location_t struct. |
[in,out] | eqb | pointer to a cs_equation_builder_t structure |
[in,out] | context | 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_free_context | ( | void * | scheme_context | ) |
Destroy a cs_cdovb_scaleq_t structure.
[in,out] | scheme_context | 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 |
cs_real_t* cs_cdovb_scaleq_get_cell_values | ( | void * | context, |
bool | previous | ||
) |
Compute an array of values at mesh cells by interpolating the variable field associated to the given context located at mesh 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 |
[in] | previous | retrieve the previous state (true/false) |
cs_real_t* cs_cdovb_scaleq_get_vertex_values | ( | void * | context, |
bool | previous | ||
) |
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 |
[in] | previous | retrieve the previous state (true/false) |
void* cs_cdovb_scaleq_init_context | ( | const cs_equation_param_t * | eqp, |
int | var_id, | ||
int | bflux_id, | ||
cs_equation_builder_t * | eqb | ||
) |
Initialize a cs_cdovb_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 struct. |
void cs_cdovb_scaleq_init_properties | ( | int | t_id, |
cs_real_t | t_eval, | ||
const cs_equation_param_t * | eqp, | ||
cs_equation_builder_t * | eqb, | ||
void * | context | ||
) |
Set the main properties before the main loop on cells. Case of scalar-valued CDO-Vb schemes.
[in] | t_id | thread id if > 0 |
[in] | t_eval | time at which one evaluates BCs |
[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 a scheme context structure |
void cs_cdovb_scaleq_init_sharing | ( | const cs_cdo_quantities_t * | quant, |
const cs_cdo_connect_t * | connect, | ||
const cs_time_step_t * | time_step | ||
) |
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 |
void cs_cdovb_scaleq_init_values | ( | cs_real_t | t_eval, |
const int | field_id, | ||
const cs_mesh_t * | mesh, | ||
const cs_equation_param_t * | eqp, | ||
cs_equation_builder_t * | eqb, | ||
void * | context | ||
) |
Set the initial values of the variable field taking into account the boundary conditions. Case of scalar-valued CDO-Vb schemes.
[in] | t_eval | time at which one evaluates BCs |
[in] | field_id | id related to the variable field of this equation |
[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,out] | context | pointer to the scheme context (cast on-the-fly) |
bool cs_cdovb_scaleq_is_initialized | ( | void | ) |
Check if the generic structures for building a CDO-Vb scheme are allocated.
void cs_cdovb_scaleq_setup | ( | cs_real_t | t_eval, |
const cs_mesh_t * | mesh, | ||
const cs_equation_param_t * | eqp, | ||
cs_equation_builder_t * | eqb, | ||
cs_flag_t | vtx_bc_flag[] | ||
) |
Set the boundary conditions known from the settings Define an indirection array for the enforcement of internal DoFs only if needed. Case of scalar-valued CDO-Vb schemes.
[in] | t_eval | time at which one evaluates BCs |
[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,out] | vtx_bc_flag | pointer to an array of BC flag for each vtx |
void cs_cdovb_scaleq_solve_implicit | ( | bool | cur2prev, |
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-Vb scheme Implicit time scheme is used to progress in time. One works cellwise and then process to the assembly.
[in] | cur2prev | true="current to previous" operation is performed |
[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_cdovb_scaleq_t structure |
void cs_cdovb_scaleq_solve_implicit_incr | ( | bool | cur2prev, |
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-Vb scheme Implicit time scheme is used to progress in time. One works cellwise and then process to the assembly.
Variant with an incremental approach. The system is modified to fit the incremental form (unknows are the increments and rhs corresponds to a residual). This is useful when the resolution is embedded into a non-linear process.
[in] | cur2prev | Not used. Should be done before if needed. |
[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_cdovb_scaleq_t structure |
void cs_cdovb_scaleq_solve_steady_state | ( | bool | cur2prev, |
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-Vb scheme One works cellwise and then process to the assembly.
[in] | cur2prev | true="current to previous" operation is performed |
[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_cdovb_scaleq_t structure |
void cs_cdovb_scaleq_solve_steady_state_incr | ( | bool | cur2prev, |
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-Vb scheme One works cellwise and then process to the assembly.
Variant with an incremental approach. The system is modified to fit the incremental form (unknows are the increments and rhs corresponds to a residual). This is useful when the resolution is embedded into a non-linear process.
[in] | cur2prev | Not used. Should be done before if needed. |
[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_cdovb_scaleq_t structure |
void cs_cdovb_scaleq_solve_theta | ( | bool | cur2prev, |
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-Vb scheme Theta time scheme is used to progress in time. One works cellwise and then process to the assembly.
[in] | cur2prev | true="current to previous" operation is performed |
[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_cdovb_scaleq_t structure |