My Project
programmer's documentation
Functions
cs_cdofb_vecteq.c File Reference
#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_equation_bc.h"
#include "cs_equation_common.h"
#include "cs_evaluate.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_search.h"
#include "cs_sles.h"
#include "cs_source_term.h"
#include "cs_static_condensation.h"
#include "cs_cdofb_priv.h"
#include "cs_cdofb_vecteq.h"
Include dependency graph for cs_cdofb_vecteq.c:

Functions

void cs_cdofb_vecteq_setup_bc (cs_real_t t_eval, const cs_mesh_t *mesh, const cs_equation_param_t *eqp, cs_equation_builder_t *eqb, cs_real_t *p_dir_values[])
 Set the boundary conditions known from the settings. More...
 
void cs_cdofb_vecteq_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_cdofb_vecteq_t *eqc, const cs_real_t dir_values[], const cs_real_t field_tn[], cs_real_t t_eval, cs_cell_sys_t *csys, cs_cell_builder_t *cb)
 Initialize the local structure for the current cell. More...
 
void cs_cdofb_vecteq_diffusion (double time_eval, const cs_equation_param_t *eqp, const cs_equation_builder_t *eqb, const cs_cdofb_vecteq_t *eqc, const cs_cell_mesh_t *cm, cs_face_mesh_t *fm, cs_cell_sys_t *csys, cs_cell_builder_t *cb)
 Build the local matrices arising from the diffusion, advection, reaction terms in CDO-Fb schemes. More...
 
void cs_cdofb_vecteq_advection_diffusion (double time_eval, const cs_equation_param_t *eqp, const cs_cdofb_vecteq_t *eqc, const cs_cell_mesh_t *cm, cs_cell_sys_t *csys, cs_cell_builder_t *cb)
 Build the local matrices arising from the diffusion, advection, reaction terms in CDO-Fb schemes. More...
 
int cs_cdofb_vecteq_solve_system (cs_sles_t *sles, const cs_matrix_t *matrix, const cs_equation_param_t *eqp, cs_real_t *x, cs_real_t *b)
 Solve a linear system arising from a scalar-valued CDO-Fb scheme. More...
 
void cs_cdofb_vecteq_solve_steady_state (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 vector steady-state diffusion equation with a CDO-Fb scheme One works cellwise and then process to the assembly. More...
 
void cs_cdofb_vecteq_solve_implicit (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 vector diffusion equation with a CDO-Fb scheme and an implicit Euler scheme. One works cellwise and then process to the assembly. More...
 
void cs_cdofb_vecteq_solve_theta (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 vector diffusion equation with a CDO-Fb scheme and an implicit/explicit theta scheme. One works cellwise and then process to the assembly. More...
 
bool cs_cdofb_vecteq_is_initialized (void)
 Check if the generic structures for building a CDO-Fb scheme are allocated. More...
 
void cs_cdofb_vecteq_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 vector-valued face-based schemes. Set shared pointers from the main domain members. More...
 
const cs_matrix_structure_tcs_cdofb_vecteq_matrix_structure (void)
 Get the pointer to the related cs_matrix_structure_t. More...
 
void cs_cdofb_vecteq_get (cs_cell_sys_t **csys, cs_cell_builder_t **cb)
 Retrieve work buffers used for building a CDO system cellwise. More...
 
void cs_cdofb_vecteq_finalize_common (void)
 Free work buffer and general structure related to CDO face-based schemes. More...
 
void * cs_cdofb_vecteq_init_context (const cs_equation_param_t *eqp, int var_id, int bflux_id, cs_equation_builder_t *eqb)
 Initialize a cs_cdofb_vecteq_t structure storing data useful for building and managing such a scheme. More...
 
void * cs_cdofb_vecteq_free_context (void *data)
 Destroy a cs_cdofb_vecteq_t structure. More...
 
void cs_cdofb_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 CDO-Fb schemes. More...
 
void cs_cdofb_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...
 
cs_real_tcs_cdofb_vecteq_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 faces) The lifecycle of this array is managed by the code. So one does not have to free the return pointer. More...
 
cs_real_tcs_cdofb_vecteq_get_face_values (void *context)
 Retrieve an array of values at mesh faces for the current context. The lifecycle of this array is managed by the code. So one does not have to free the return pointer. More...
 
void cs_cdofb_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_cdofb_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...
 

Function Documentation

◆ cs_cdofb_vecteq_advection_diffusion()

void cs_cdofb_vecteq_advection_diffusion ( double  time_eval,
const cs_equation_param_t eqp,
const cs_cdofb_vecteq_t *  eqc,
const cs_cell_mesh_t cm,
cs_cell_sys_t csys,
cs_cell_builder_t cb 
)

Build the local matrices arising from the diffusion, advection, reaction terms in CDO-Fb schemes.

Parameters
[in]time_evaltime at which analytic function are evaluated
[in]eqppointer to a cs_equation_param_t structure
[in]eqccontext for this kind of discretization
[in]cmpointer to a cellwise view of the mesh
[in,out]csyspointer to a cellwise view of the system
[in,out]cbpointer to a cellwise builder

◆ cs_cdofb_vecteq_diffusion()

void cs_cdofb_vecteq_diffusion ( double  time_eval,
const cs_equation_param_t eqp,
const cs_equation_builder_t eqb,
const cs_cdofb_vecteq_t *  eqc,
const cs_cell_mesh_t cm,
cs_face_mesh_t fm,
cs_cell_sys_t csys,
cs_cell_builder_t cb 
)

Build the local matrices arising from the diffusion, advection, reaction terms in CDO-Fb schemes.

Parameters
[in]time_evaltime at which analytic function are evaluated
[in]eqppointer to a cs_equation_param_t structure
[in]eqbpointer to a cs_equation_builder_t structure
[in]eqccontext for this kind of discretization
[in]cmpointer to a cellwise view of the mesh
[in,out]fmpointer to a facewise view of the mesh
[in,out]csyspointer to a cellwise view of the system
[in,out]cbpointer to a cellwise builder

◆ cs_cdofb_vecteq_extra_op()

void cs_cdofb_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.

Parameters
[in]eqnamename of the equation
[in]fieldpointer to a field structure
[in]eqppointer to a cs_equation_param_t structure
[in,out]eqbpointer to a cs_equation_builder_t structure
[in,out]datapointer to cs_cdofb_vecteq_t structure

◆ cs_cdofb_vecteq_finalize_common()

void cs_cdofb_vecteq_finalize_common ( void  )

Free work buffer and general structure related to CDO face-based schemes.

◆ cs_cdofb_vecteq_free_context()

void* cs_cdofb_vecteq_free_context ( void *  data)

Destroy a cs_cdofb_vecteq_t structure.

Parameters
[in,out]datapointer to a cs_cdofb_vecteq_t structure
Returns
a NULL pointer

◆ cs_cdofb_vecteq_get()

void cs_cdofb_vecteq_get ( cs_cell_sys_t **  csys,
cs_cell_builder_t **  cb 
)

Retrieve work buffers used for building a CDO system cellwise.

Parameters
[out]csyspointer to a pointer on a cs_cell_sys_t structure
[out]cbpointer to a pointer on a cs_cell_builder_t structure

◆ cs_cdofb_vecteq_get_cell_values()

cs_real_t* cs_cdofb_vecteq_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 faces) The lifecycle of this array is managed by the code. So one does not have to free the return pointer.

Parameters
[in,out]contextpointer to a data structure cast on-the-fly
Returns
a pointer to an array of cs_real_t

◆ cs_cdofb_vecteq_get_face_values()

cs_real_t* cs_cdofb_vecteq_get_face_values ( void *  context)

Retrieve an array of values at mesh faces for the current context. The lifecycle of this array is managed by the code. So one does not have to free the return pointer.

Parameters
[in,out]contextpointer to a data structure cast on-the-fly
Returns
a pointer to an array of cs_real_t (size n_faces)

◆ cs_cdofb_vecteq_init_cell_system()

void cs_cdofb_vecteq_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_cdofb_vecteq_t *  eqc,
const cs_real_t  dir_values[],
const cs_real_t  field_tn[],
cs_real_t  t_eval,
cs_cell_sys_t csys,
cs_cell_builder_t cb 
)

Initialize the local structure for the current cell.

Parameters
[in]cell_flagflag related to the current cell
[in]cmpointer to a cellwise view of the mesh
[in]eqppointer to a cs_equation_param_t structure
[in]eqbpointer to a cs_equation_builder_t structure
[in]eqcpointer to a cs_cdofb_vecteq_t structure
[in]dir_valuesDirichlet values associated to each face
[in]field_tnvalues of the field at the last computed time
[in]t_evaltime at which one performs the evaluation
[in,out]csyspointer to a cellwise view of the system
[in,out]cbpointer to a cellwise builder

◆ cs_cdofb_vecteq_init_common()

void cs_cdofb_vecteq_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 vector-valued face-based schemes. Set shared pointers from the main domain members.

Parameters
[in]quantadditional mesh quantities struct.
[in]connectpointer to a cs_cdo_connect_t struct.
[in]time_steppointer to a time step structure
[in]mspointer to a cs_matrix_structure_t structure

◆ cs_cdofb_vecteq_init_context()

void* cs_cdofb_vecteq_init_context ( const cs_equation_param_t eqp,
int  var_id,
int  bflux_id,
cs_equation_builder_t eqb 
)

Initialize a cs_cdofb_vecteq_t structure storing data useful for building and managing such a scheme.

Parameters
[in]eqppointer to a cs_equation_param_t structure
[in]var_idid of the variable field
[in]bflux_idid of the boundary flux field
[in,out]eqbpointer to a cs_equation_builder_t structure
Returns
a pointer to a new allocated cs_cdofb_vecteq_t structure

◆ cs_cdofb_vecteq_init_values()

void cs_cdofb_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 CDO-Fb schemes.

Parameters
[in]t_evaltime at which one evaluates BCs
[in]field_idid related to the variable field of this equation
[in]meshpointer to a cs_mesh_t structure
[in]eqppointer to a cs_equation_param_t structure
[in,out]eqbpointer to a cs_equation_builder_t structure
[in,out]contextpointer to the scheme context (cast on-the-fly)

◆ cs_cdofb_vecteq_is_initialized()

bool cs_cdofb_vecteq_is_initialized ( void  )

Check if the generic structures for building a CDO-Fb scheme are allocated.

Returns
true or false

◆ cs_cdofb_vecteq_matrix_structure()

const cs_matrix_structure_t* cs_cdofb_vecteq_matrix_structure ( void  )

Get the pointer to the related cs_matrix_structure_t.

Returns
a pointer to a cs_matrix_structure_t structure

◆ cs_cdofb_vecteq_read_restart()

void cs_cdofb_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.

Parameters
[in,out]restartpointer to cs_restart_t structure
[in]eqnamename of the related equation
[in]scheme_contextpointer to a data structure cast on-the-fly

◆ cs_cdofb_vecteq_setup_bc()

void cs_cdofb_vecteq_setup_bc ( cs_real_t  t_eval,
const cs_mesh_t mesh,
const cs_equation_param_t eqp,
cs_equation_builder_t eqb,
cs_real_t p_dir_values[] 
)

Set the boundary conditions known from the settings.

DOXYGEN_SHOULD_SKIP_THIS

Parameters
[in]t_evaltime at which one evaluates BCs
[in]meshpointer to a cs_mesh_t structure
[in]eqppointer to a cs_equation_param_t structure
[in,out]eqbpointer to a cs_equation_builder_t structure
[in,out]p_dir_valuespointer to the Dirichlet values to set

◆ cs_cdofb_vecteq_solve_implicit()

void cs_cdofb_vecteq_solve_implicit ( 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 vector diffusion equation with a CDO-Fb scheme and an implicit Euler scheme. One works cellwise and then process to the assembly.

Parameters
[in]meshpointer to a cs_mesh_t structure
[in]field_idid of the variable field related to this equation
[in]eqppointer to a cs_equation_param_t structure
[in,out]eqbpointer to a cs_equation_builder_t structure
[in,out]contextpointer to cs_cdofb_vecteq_t structure

◆ cs_cdofb_vecteq_solve_steady_state()

void cs_cdofb_vecteq_solve_steady_state ( 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 vector steady-state diffusion equation with a CDO-Fb scheme One works cellwise and then process to the assembly.

Parameters
[in]meshpointer to a cs_mesh_t structure
[in]field_idid of the variable field related to this equation
[in]eqppointer to a cs_equation_param_t structure
[in,out]eqbpointer to a cs_equation_builder_t structure
[in,out]contextpointer to cs_cdofb_vecteq_t structure

◆ cs_cdofb_vecteq_solve_system()

int cs_cdofb_vecteq_solve_system ( cs_sles_t sles,
const cs_matrix_t matrix,
const cs_equation_param_t eqp,
cs_real_t x,
cs_real_t b 
)

Solve a linear system arising from a scalar-valued CDO-Fb scheme.

Parameters
[in,out]slespointer to a cs_sles_t structure
[in]matrixpointer to a cs_matrix_t structure
[in]eqppointer to a cs_equation_param_t structure
[in,out]xsolution of the linear system (in: initial guess)
[in,out]bright-hand side (scatter/gather if needed)
Returns
the number of iterations of the linear solver

◆ cs_cdofb_vecteq_solve_theta()

void cs_cdofb_vecteq_solve_theta ( 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 vector diffusion equation with a CDO-Fb scheme and an implicit/explicit theta scheme. One works cellwise and then process to the assembly.

Parameters
[in]meshpointer to a cs_mesh_t structure
[in]field_idid of the variable field related to this equation
[in]eqppointer to a cs_equation_param_t structure
[in,out]eqbpointer to a cs_equation_builder_t structure
[in,out]contextpointer to cs_cdofb_vecteq_t structure

◆ cs_cdofb_vecteq_write_restart()

void cs_cdofb_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.

Parameters
[in,out]restartpointer to cs_restart_t structure
[in]eqnamename of the related equation
[in]scheme_contextpointer to a data structure cast on-the-fly