7.0
general documentation
cs_cdofb_navsto.h File Reference
#include "cs_defs.h"
#include "cs_base.h"
#include "cs_cdo_connect.h"
#include "cs_cdo_quantities.h"
#include "cs_field.h"
#include "cs_math.h"
#include "cs_matrix.h"
#include "cs_mesh.h"
#include "cs_navsto_param.h"
#include "cs_time_step.h"
#include "cs_sdm.h"
+ Include dependency graph for cs_cdofb_navsto.h:

Go to the source code of this file.

Data Structures

struct  cs_cdofb_navsto_builder_t
 

Functions

cs_cdofb_navsto_builder_t cs_cdofb_navsto_create_builder (const cs_navsto_param_t *nsp, const cs_cdo_connect_t *connect)
 Create and allocate a local NavSto builder when Fb schemes are used. More...
 
void cs_cdofb_navsto_free_builder (cs_cdofb_navsto_builder_t *nsb)
 Destroy the given cs_cdofb_navsto_builder_t structure. More...
 
void cs_cdofb_navsto_define_builder (cs_real_t t_eval, const cs_navsto_param_t *nsp, const cs_cell_mesh_t *cm, const cs_cell_sys_t *csys, const cs_cdo_bc_face_t *pr_bc, const cs_boundary_type_t *bf_type, cs_cdofb_navsto_builder_t *nsb)
 Set the members of the cs_cdofb_navsto_builder_t structure. More...
 
void cs_cdofb_navsto_finalize (void)
 Free allocated structures associated to this file. More...
 
void cs_cdofb_navsto_mass_flux (const cs_navsto_param_t *nsp, const cs_cdo_quantities_t *quant, const cs_real_t *face_vel, cs_real_t *mass_flux)
 Compute the mass flux playing the role of the advection field in the Navier-Stokes equations One considers the mass flux across primal faces which relies on the velocity vector defined on each face. More...
 
cs_real_t cs_cdofb_navsto_cell_divergence (const cs_lnum_t c_id, const cs_cdo_quantities_t *quant, const cs_adjacency_t *c2f, const cs_real_t *f_vals)
 Compute the divergence of a cell using the cs_cdo_quantities_t structure. More...
 
void cs_cdofb_navsto_add_grad_div (short int n_fc, const cs_real_t zeta, const cs_real_t div[], cs_sdm_t *mat)
 Add the grad-div part to the local matrix (i.e. for the current cell) More...
 
void cs_cdofb_navsto_init_pressure (const cs_navsto_param_t *nsp, const cs_cdo_quantities_t *quant, const cs_time_step_t *ts, cs_field_t *pr)
 Initialize the pressure values. More...
 
void cs_cdofb_navsto_init_face_pressure (const cs_navsto_param_t *nsp, const cs_cdo_connect_t *connect, const cs_time_step_t *ts, cs_real_t *pr_f)
 Initialize the pressure values when the pressure is defined at faces. More...
 
void cs_cdofb_navsto_rescale_pressure_to_ref (const cs_navsto_param_t *nsp, const cs_cdo_quantities_t *quant, cs_real_t values[])
 Update the pressure field in order to get a field with a mean-value equal to the reference value. More...
 
void cs_cdofb_navsto_set_zero_mean_pressure (const cs_cdo_quantities_t *quant, cs_real_t values[])
 Update the pressure field in order to get a field with a zero-mean average. More...
 
void cs_cdofb_navsto_extra_op (const cs_navsto_param_t *nsp, const cs_mesh_t *mesh, const cs_cdo_quantities_t *quant, const cs_cdo_connect_t *connect, const cs_time_step_t *ts, const cs_adv_field_t *adv_field, const cs_real_t *mass_flux, const cs_real_t *u_cell, const cs_real_t *u_face)
 Perform extra-operation related to Fb schemes when solving Navier-Stokes. More...
 
void cs_cdofb_block_dirichlet_alge (short int f, const cs_equation_param_t *eqp, const cs_cell_mesh_t *cm, const cs_property_data_t *pty, cs_cell_builder_t *cb, cs_cell_sys_t *csys)
 Take into account a Dirichlet BCs on the three velocity components. For instance for a velocity inlet boundary or a wall Handle the velocity-block in the global algebraic system in case of an algebraic technique. This prototype matches the function pointer cs_cdo_apply_boundary_t. More...
 
void cs_cdofb_block_dirichlet_pena (short int f, const cs_equation_param_t *eqp, const cs_cell_mesh_t *cm, const cs_property_data_t *pty, cs_cell_builder_t *cb, cs_cell_sys_t *csys)
 Take into account a Dirichlet BCs on the three velocity components. For instance for a velocity inlet boundary or a wall Handle the velocity-block in the global algebraic system in case of a penalization technique (with a large coefficient). One assumes that static condensation has been performed and that the velocity-block has size 3*n_fc This prototype matches the function pointer cs_cdo_apply_boundary_t. More...
 
void cs_cdofb_block_dirichlet_weak (short int f, const cs_equation_param_t *eqp, const cs_cell_mesh_t *cm, const cs_property_data_t *pty, cs_cell_builder_t *cb, cs_cell_sys_t *csys)
 Take into account a Dirichlet BCs on the three velocity components. For instance for a velocity inlet boundary or a wall Handle the velocity-block in the global algebraic system in case of a weak penalization technique (Nitsche). One assumes that static condensation has not been performed yet and that the velocity-block has size 3*(n_fc + 1) This prototype matches the function pointer cs_cdo_apply_boundary_t. More...
 
void cs_cdofb_block_dirichlet_wsym (short int f, const cs_equation_param_t *eqp, const cs_cell_mesh_t *cm, const cs_property_data_t *pty, cs_cell_builder_t *cb, cs_cell_sys_t *csys)
 Take into account a Dirichlet BCs on the three velocity components. For instance for a velocity inlet boundary or a wall Handle the velocity-block in the global algebraic system in case of a weak penalization technique (symmetrized Nitsche). One assumes that static condensation has not been performed yet and that the velocity-block has size 3*(n_fc + 1) This prototype matches the function pointer cs_cdo_apply_boundary_t. More...
 
void cs_cdofb_symmetry (short int f, const cs_equation_param_t *eqp, const cs_cell_mesh_t *cm, const cs_property_data_t *pty, cs_cell_builder_t *cb, cs_cell_sys_t *csys)
 Take into account a symmetric boundary (treated as a sliding BCs on the three velocity components. A weak penalization technique (symmetrized Nitsche) is used. One assumes that static condensation has not been performed yet and that the velocity-block has (n_fc + 1) blocks of size 3x3. This prototype matches the function pointer cs_cdo_apply_boundary_t. More...
 
void cs_cdofb_fixed_wall (short int f, const cs_equation_param_t *eqp, const cs_cell_mesh_t *cm, const cs_property_data_t *pty, cs_cell_builder_t *cb, cs_cell_sys_t *csys)
 Take into account a wall BCs by a weak enforcement using Nitsche technique plus a symmetric treatment. Case of vector-valued CDO Face-based schemes This prototype matches the function pointer cs_cdo_apply_boundary_t. More...
 
void cs_cdofb_navsto_boussinesq_source_term (cs_lnum_t n_elts, const cs_lnum_t *elt_ids, bool dense_output, void *input, cs_real_t *retval)
 Get the source term for computing the Boussinesq approximation This relies on the prototype associated to the generic function pointer cs_dof_function_t. More...
 
void cs_cdofb_navsto_stream_source_term (cs_lnum_t n_elts, const cs_lnum_t *elt_ids, bool dense_output, void *input, cs_real_t *retval)
 Get the source term for computing the stream function. This relies on the prototype associated to the generic function pointer cs_dof_function_t. More...
 

Function Documentation

◆ cs_cdofb_block_dirichlet_alge()

void cs_cdofb_block_dirichlet_alge ( short int  f,
const cs_equation_param_t eqp,
const cs_cell_mesh_t cm,
const cs_property_data_t pty,
cs_cell_builder_t cb,
cs_cell_sys_t csys 
)

Take into account a Dirichlet BCs on the three velocity components. For instance for a velocity inlet boundary or a wall Handle the velocity-block in the global algebraic system in case of an algebraic technique. This prototype matches the function pointer cs_cdo_apply_boundary_t.

Parameters
[in]fface id in the cell mesh numbering
[in]eqppointer to a cs_equation_param_t struct.
[in]cmpointer to a cs_cell_mesh_t structure
[in]ptypointer to a cs_property_data_t structure
[in,out]cbpointer to a cs_cell_builder_t structure
[in,out]csysstructure storing the cellwise system

◆ cs_cdofb_block_dirichlet_pena()

void cs_cdofb_block_dirichlet_pena ( short int  f,
const cs_equation_param_t eqp,
const cs_cell_mesh_t cm,
const cs_property_data_t pty,
cs_cell_builder_t cb,
cs_cell_sys_t csys 
)

Take into account a Dirichlet BCs on the three velocity components. For instance for a velocity inlet boundary or a wall Handle the velocity-block in the global algebraic system in case of a penalization technique (with a large coefficient). One assumes that static condensation has been performed and that the velocity-block has size 3*n_fc This prototype matches the function pointer cs_cdo_apply_boundary_t.

Parameters
[in]fface id in the cell mesh numbering
[in]eqppointer to a cs_equation_param_t struct.
[in]cmpointer to a cs_cell_mesh_t structure
[in]ptypointer to a cs_property_data_t structure
[in,out]cbpointer to a cs_cell_builder_t structure
[in,out]csysstructure storing the cellwise system

◆ cs_cdofb_block_dirichlet_weak()

void cs_cdofb_block_dirichlet_weak ( short int  f,
const cs_equation_param_t eqp,
const cs_cell_mesh_t cm,
const cs_property_data_t pty,
cs_cell_builder_t cb,
cs_cell_sys_t csys 
)

Take into account a Dirichlet BCs on the three velocity components. For instance for a velocity inlet boundary or a wall Handle the velocity-block in the global algebraic system in case of a weak penalization technique (Nitsche). One assumes that static condensation has not been performed yet and that the velocity-block has size 3*(n_fc + 1) This prototype matches the function pointer cs_cdo_apply_boundary_t.

Parameters
[in]fface id in the cell mesh numbering
[in]eqppointer to a cs_equation_param_t struct.
[in]cmpointer to a cs_cell_mesh_t structure
[in]ptypointer to a cs_property_data_t structure
[in,out]cbpointer to a cs_cell_builder_t structure
[in,out]csysstructure storing the cellwise system

◆ cs_cdofb_block_dirichlet_wsym()

void cs_cdofb_block_dirichlet_wsym ( short int  f,
const cs_equation_param_t eqp,
const cs_cell_mesh_t cm,
const cs_property_data_t pty,
cs_cell_builder_t cb,
cs_cell_sys_t csys 
)

Take into account a Dirichlet BCs on the three velocity components. For instance for a velocity inlet boundary or a wall Handle the velocity-block in the global algebraic system in case of a weak penalization technique (symmetrized Nitsche). One assumes that static condensation has not been performed yet and that the velocity-block has size 3*(n_fc + 1) This prototype matches the function pointer cs_cdo_apply_boundary_t.

Parameters
[in]fface id in the cell mesh numbering
[in]eqppointer to a cs_equation_param_t struct.
[in]cmpointer to a cs_cell_mesh_t structure
[in]ptypointer to a cs_property_data_t structure
[in,out]cbpointer to a cs_cell_builder_t structure
[in,out]csysstructure storing the cellwise system

◆ cs_cdofb_fixed_wall()

void cs_cdofb_fixed_wall ( short int  f,
const cs_equation_param_t eqp,
const cs_cell_mesh_t cm,
const cs_property_data_t pty,
cs_cell_builder_t cb,
cs_cell_sys_t csys 
)

Take into account a wall BCs by a weak enforcement using Nitsche technique plus a symmetric treatment. Case of vector-valued CDO Face-based schemes This prototype matches the function pointer cs_cdo_apply_boundary_t.

Parameters
[in]fface id in the cell mesh numbering
[in]eqppointer to a cs_equation_param_t struct.
[in]cmpointer to a cs_cell_mesh_t structure
[in]ptypointer to a cs_property_data_t structure
[in,out]cbpointer to a cs_cell_builder_t structure
[in,out]csysstructure storing the cellwise system

◆ cs_cdofb_navsto_add_grad_div()

void cs_cdofb_navsto_add_grad_div ( short int  n_fc,
const cs_real_t  zeta,
const cs_real_t  div[],
cs_sdm_t *  mat 
)

Add the grad-div part to the local matrix (i.e. for the current cell)

Parameters
[in]n_fclocal number of faces for the current cell
[in]zetascalar coefficient for the grad-div operator
[in]divdivergence
[in,out]matlocal system matrix to update

◆ cs_cdofb_navsto_boussinesq_source_term()

void cs_cdofb_navsto_boussinesq_source_term ( cs_lnum_t  n_elts,
const cs_lnum_t elt_ids,
bool  dense_output,
void *  input,
cs_real_t retval 
)

Get the source term for computing the Boussinesq approximation This relies on the prototype associated to the generic function pointer cs_dof_function_t.

Parameters
[in]n_eltsnumber of elements to consider
[in]elt_idslist of elements ids
[in]dense_outputperform an indirection in retval or not
[in]inputNULL or pointer to a structure cast on-the-fly
[in,out]retvalresult of the function. Must be allocated.

◆ cs_cdofb_navsto_cell_divergence()

cs_real_t cs_cdofb_navsto_cell_divergence ( const cs_lnum_t  c_id,
const cs_cdo_quantities_t quant,
const cs_adjacency_t c2f,
const cs_real_t f_vals 
)

Compute the divergence of a cell using the cs_cdo_quantities_t structure.

Parameters
[in]c_idcell id
[in]quantpointer to a cs_cdo_quantities_t
[in]c2fpointer to cell-to-face cs_adjacency_t
[in]f_valsvalues of the face DoFs
Returns
the divergence for the corresponding cell

◆ cs_cdofb_navsto_create_builder()

cs_cdofb_navsto_builder_t cs_cdofb_navsto_create_builder ( const cs_navsto_param_t nsp,
const cs_cdo_connect_t connect 
)

Create and allocate a local NavSto builder when Fb schemes are used.

Parameters
[in]nspset of parameters to define the NavSto system
[in]connectpointer to a cs_cdo_connect_t structure
Returns
a cs_cdofb_navsto_builder_t structure

◆ cs_cdofb_navsto_define_builder()

void cs_cdofb_navsto_define_builder ( cs_real_t  t_eval,
const cs_navsto_param_t nsp,
const cs_cell_mesh_t cm,
const cs_cell_sys_t csys,
const cs_cdo_bc_face_t pr_bc,
const cs_boundary_type_t bf_type,
cs_cdofb_navsto_builder_t nsb 
)

Set the members of the cs_cdofb_navsto_builder_t structure.

Parameters
[in]t_evaltime at which one evaluates the pressure BC
[in]nspset of parameters to define the NavSto system
[in]cmcellwise view of the mesh
[in]csyscellwise view of the algebraic system
[in]pr_bcset of definitions for the presuure BCs
[in]bf_typetype of boundaries for all boundary faces
[in,out]nsbbuilder to update

◆ cs_cdofb_navsto_extra_op()

void cs_cdofb_navsto_extra_op ( const cs_navsto_param_t nsp,
const cs_mesh_t mesh,
const cs_cdo_quantities_t quant,
const cs_cdo_connect_t connect,
const cs_time_step_t ts,
const cs_adv_field_t adv_field,
const cs_real_t mass_flux,
const cs_real_t u_cell,
const cs_real_t u_face 
)

Perform extra-operation related to Fb schemes when solving Navier-Stokes.

  • Compute the mass flux accross the boundaries.
  • Compute the kinetic energy
  • Compute the velocity gradient
  • Compute the vorticity
  • Compute the helicity
  • Compute the enstrophy
  • Compute the stream function
Parameters
[in]nsppointer to a cs_navsto_param_t struct.
[in]meshpointer to a cs_mesh_t structure
[in]quantpointer to a cs_cdo_quantities_t struct.
[in]connectpointer to a cs_cdo_connect_t struct.
[in]tspointer to a cs_time_step_t struct.
[in]adv_fieldpointer to a cs_adv_field_t struct.
[in]mass_fluxscalar-valued mass flux for each face
[in]u_cellvector-valued velocity in each cell
[in]u_facevector-valued velocity on each face

◆ cs_cdofb_navsto_finalize()

void cs_cdofb_navsto_finalize ( void  )

Free allocated structures associated to this file.

◆ cs_cdofb_navsto_free_builder()

void cs_cdofb_navsto_free_builder ( cs_cdofb_navsto_builder_t nsb)

Destroy the given cs_cdofb_navsto_builder_t structure.

Parameters
[in,out]nsbpointer to the cs_cdofb_navsto_builder_t to free

◆ cs_cdofb_navsto_init_face_pressure()

void cs_cdofb_navsto_init_face_pressure ( const cs_navsto_param_t nsp,
const cs_cdo_connect_t connect,
const cs_time_step_t ts,
cs_real_t pr_f 
)

Initialize the pressure values when the pressure is defined at faces.

Parameters
[in]nsppointer to a cs_navsto_param_t structure
[in]connectpointer to a cs_cdo_connect_t structure
[in]tspointer to a cs_time_step_t structure
[in,out]pr_fpointer to the pressure values at faces

◆ cs_cdofb_navsto_init_pressure()

void cs_cdofb_navsto_init_pressure ( const cs_navsto_param_t nsp,
const cs_cdo_quantities_t quant,
const cs_time_step_t ts,
cs_field_t pr 
)

Initialize the pressure values.

Parameters
[in]nsppointer to a cs_navsto_param_t structure
[in]quantpointer to a cs_cdo_quantities_t structure
[in]tspointer to a cs_time_step_t structure
[in,out]prpointer to the pressure cs_field_t structure

◆ cs_cdofb_navsto_mass_flux()

void cs_cdofb_navsto_mass_flux ( const cs_navsto_param_t nsp,
const cs_cdo_quantities_t quant,
const cs_real_t face_vel,
cs_real_t mass_flux 
)

Compute the mass flux playing the role of the advection field in the Navier-Stokes equations One considers the mass flux across primal faces which relies on the velocity vector defined on each face.

Parameters
[in]nspset of parameters to define the NavSto system
[in]quantset of additional geometrical quantities
[in]face_velvelocity vectors for each face
[in,out]mass_fluxarray of mass flux values to update (allocated)

◆ cs_cdofb_navsto_rescale_pressure_to_ref()

void cs_cdofb_navsto_rescale_pressure_to_ref ( const cs_navsto_param_t nsp,
const cs_cdo_quantities_t quant,
cs_real_t  values[] 
)

Update the pressure field in order to get a field with a mean-value equal to the reference value.

Parameters
[in]nsppointer to a cs_navsto_param_t structure
[in]quantpointer to a cs_cdo_quantities_t structure
[in,out]valuespressure field values

◆ cs_cdofb_navsto_set_zero_mean_pressure()

void cs_cdofb_navsto_set_zero_mean_pressure ( const cs_cdo_quantities_t quant,
cs_real_t  values[] 
)

Update the pressure field in order to get a field with a zero-mean average.

Parameters
[in]quantpointer to a cs_cdo_quantities_t structure
[in,out]valuespressure field values

◆ cs_cdofb_navsto_stream_source_term()

void cs_cdofb_navsto_stream_source_term ( cs_lnum_t  n_elts,
const cs_lnum_t elt_ids,
bool  dense_output,
void *  input,
cs_real_t retval 
)

Get the source term for computing the stream function. This relies on the prototype associated to the generic function pointer cs_dof_function_t.

Parameters
[in]n_eltsnumber of elements to consider
[in]elt_idslist of elements ids
[in]dense_outputperform an indirection in retval or not
[in]inputNULL or pointer to a structure cast on-the-fly
[in,out]retvalresult of the function. Must be allocated.

◆ cs_cdofb_symmetry()

void cs_cdofb_symmetry ( short int  f,
const cs_equation_param_t eqp,
const cs_cell_mesh_t cm,
const cs_property_data_t pty,
cs_cell_builder_t cb,
cs_cell_sys_t csys 
)

Take into account a symmetric boundary (treated as a sliding BCs on the three velocity components. A weak penalization technique (symmetrized Nitsche) is used. One assumes that static condensation has not been performed yet and that the velocity-block has (n_fc + 1) blocks of size 3x3. This prototype matches the function pointer cs_cdo_apply_boundary_t.

Parameters
[in]fface id in the cell mesh numbering
[in]eqppointer to a cs_equation_param_t struct.
[in]cmpointer to a cs_cell_mesh_t structure
[in]ptypointer to a cs_property_data_t structure
[in,out]cbpointer to a cs_cell_builder_t structure
[in,out]csysstructure storing the cellwise system