My Project
programmer's documentation
|
#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_boundary_zone.h"
#include "cs_cdo_advection.h"
#include "cs_cdo_bc.h"
#include "cs_cdo_diffusion.h"
#include "cs_equation_assemble.h"
#include "cs_equation_common.h"
#include "cs_hho_builder.h"
#include "cs_hodge.h"
#include "cs_log.h"
#include "cs_math.h"
#include "cs_mesh_location.h"
#include "cs_post.h"
#include "cs_quadrature.h"
#include "cs_reco.h"
#include "cs_scheme_geometry.h"
#include "cs_search.h"
#include "cs_sdm.h"
#include "cs_source_term.h"
#include "cs_hho_vecteq.h"
Macros | |
#define | CS_HHO_VECTEQ_DBG 0 |
#define | _dp3 cs_math_3_dot_product |
Functions | |
static cs_cell_builder_t * | _cell_builder_create (cs_param_space_scheme_t space_scheme, const cs_cdo_connect_t *connect) |
Initialize the local builder structure used for building the system cellwise. More... | |
static void | _init_cell_system (const cs_flag_t cell_flag, const cs_cell_mesh_t *cm, const cs_equation_param_t *eqp, const cs_equation_builder_t *eqb, const cs_hho_vecteq_t *eqc, cs_real_t t_eval, cs_hho_builder_t *hhob, cs_cell_sys_t *csys, cs_cell_builder_t *cb) |
Initialize the local structures for the current cell. More... | |
static void | _condense_and_store (const cs_adjacency_t *c2f, cs_hho_vecteq_t *eqc, cs_cell_builder_t *cb, cs_cell_sys_t *csys) |
Proceed to a static condensation of the local system and keep information inside the builder to be able to compute the values at cell centers. More... | |
void | cs_hho_vecteq_init_common (cs_flag_t scheme_flag, const cs_cdo_quantities_t *quant, const cs_cdo_connect_t *connect, const cs_time_step_t *time_step, const cs_matrix_structure_t *ms0, const cs_matrix_structure_t *ms1, const cs_matrix_structure_t *ms2) |
Allocate work buffer and general structures related to HHO schemes Set shared pointers. More... | |
void | cs_hho_vecteq_get (cs_cell_sys_t **csys, cs_cell_builder_t **cb, cs_hho_builder_t **hhob) |
Retrieve work buffers used for building a CDO system cellwise. More... | |
void | cs_hho_vecteq_finalize_common (void) |
Free buffers and generic structures related to HHO schemes. More... | |
void * | cs_hho_vecteq_init_context (const cs_equation_param_t *eqp, int var_id, int bflux_id, cs_equation_builder_t *eqb) |
Initialize a cs_hho_vecteq_t structure storing data useful for managing such a scheme. More... | |
void * | cs_hho_vecteq_free_context (void *data) |
Destroy a cs_hho_vecteq_t structure. More... | |
void | cs_hho_vecteq_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 vector-valued HHO schemes. More... | |
void | cs_hho_vecteq_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_hho_vecteq_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 data structure. More... | |
void | cs_hho_vecteq_build_system (const cs_mesh_t *mesh, const cs_real_t *field_val, 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 HHO scheme. One works cellwise and then process to the assembly. More... | |
void | cs_hho_vecteq_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 required for hybrid discretization. More... | |
cs_real_t * | cs_hho_vecteq_get_face_values (void *data) |
Get the computed values at faces (DoF used in the linear system are located at primal faces) More... | |
cs_real_t * | cs_hho_vecteq_get_cell_values (void *data) |
Get the computed values at cells (DoF used in the linear system are located at primal faces) More... | |
void | cs_hho_vecteq_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_hho_vecteq_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_hho_vecteq_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_hho_cell_sys = NULL |
static cs_cell_builder_t ** | cs_hho_cell_bld = NULL |
static cs_hho_builder_t ** | cs_hho_builders = 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_ms0 |
static const cs_matrix_structure_t * | cs_shared_ms1 |
static const cs_matrix_structure_t * | cs_shared_ms2 |
#define _dp3 cs_math_3_dot_product |
#define CS_HHO_VECTEQ_DBG 0 |
|
static |
Initialize the local builder structure used for building the system cellwise.
[in] | space_scheme | discretization scheme |
[in] | connect | pointer to a cs_cdo_connect_t structure |
|
static |
Proceed to a static condensation of the local system and keep information inside the builder to be able to compute the values at cell centers.
[in] | c2f | pointer to a cs_adjacency_t structure |
[in,out] | eqc | pointer to a cs_hho_vecteq_t structure |
[in,out] | cb | pointer to a cs_cell_builder_t structure |
[in,out] | csys | pointer to a cs_cell_sys_t structure |
|
static |
Initialize the local structures for the current cell.
[in] | cell_flag | flag related to the current cell |
[in] | cm | pointer to a cellwise view of the mesh |
[in] | eqp | pointer to a cs_equation_param_t structure |
[in] | eqb | pointer to a cs_equation_builder_t structure |
[in] | eqc | pointer to a cs_hho_vecteq_t structure |
[in] | t_eval | time at which one performs the evaluation |
[in,out] | hhob | pointer to a cs_hho_builder_t structure |
[in,out] | csys | pointer to a cellwise view of the system |
[in,out] | cb | pointer to a cellwise builder |
void cs_hho_vecteq_build_system | ( | const cs_mesh_t * | mesh, |
const cs_real_t * | field_val, | ||
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 HHO 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 field |
[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_hho_vecteq_t structure |
[in,out] | rhs | right-hand side |
[in,out] | matrix | pointer to cs_matrix_t structure to compute |
void cs_hho_vecteq_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 a cs_hho_vecteq_t structure |
void cs_hho_vecteq_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_hho_vecteq_t structure |
void cs_hho_vecteq_finalize_common | ( | void | ) |
Free buffers and generic structures related to HHO schemes.
void* cs_hho_vecteq_free_context | ( | void * | data | ) |
Destroy a cs_hho_vecteq_t structure.
[in,out] | data | pointer to a cs_hho_vecteq_t structure |
void cs_hho_vecteq_get | ( | cs_cell_sys_t ** | csys, |
cs_cell_builder_t ** | cb, | ||
cs_hho_builder_t ** | hhob | ||
) |
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 |
[out] | hhob | pointer to a pointer on a cs_hho_builder_t structure |
cs_real_t* cs_hho_vecteq_get_cell_values | ( | void * | data | ) |
Get the computed values at cells (DoF used in the linear system are located at primal faces)
[in,out] | data | pointer to a data structure cast-on-fly |
cs_real_t* cs_hho_vecteq_get_face_values | ( | void * | data | ) |
Get the computed values at faces (DoF used in the linear system are located at primal faces)
[in,out] | data | pointer to a data structure cast-on-fly |
void cs_hho_vecteq_init_common | ( | cs_flag_t | scheme_flag, |
const cs_cdo_quantities_t * | quant, | ||
const cs_cdo_connect_t * | connect, | ||
const cs_time_step_t * | time_step, | ||
const cs_matrix_structure_t * | ms0, | ||
const cs_matrix_structure_t * | ms1, | ||
const cs_matrix_structure_t * | ms2 | ||
) |
Allocate work buffer and general structures related to HHO schemes Set shared pointers.
[in] | scheme_flag | flag to identify which kind of numerical scheme is requested to solve the computational domain |
[in] | quant | pointer to a cs_cdo_quantities_t struct. |
[in] | connect | pointer to a cs_cdo_connect_t struct. |
[in] | time_step | pointer to a cs_time_step_t struct. |
[in] | ms0 | pointer to a cs_matrix_structure_t struct. (P0) |
[in] | ms1 | pointer to a cs_matrix_structure_t struct. (P1) |
[in] | ms2 | pointer to a cs_matrix_structure_t struct. (P2) |
void* cs_hho_vecteq_init_context | ( | const cs_equation_param_t * | eqp, |
int | var_id, | ||
int | bflux_id, | ||
cs_equation_builder_t * | eqb | ||
) |
Initialize a cs_hho_vecteq_t structure storing data useful for 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_hho_vecteq_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 vector-valued HHO 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) |
void cs_hho_vecteq_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 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] | data | pointer to generic data 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 cs_real_t |
void cs_hho_vecteq_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_hho_vecteq_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 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_hho_vecteq_t structure |
[in,out] | field_val | pointer to the current value of the field |
void cs_hho_vecteq_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 |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |