My Project
programmer's documentation
|
#include "cs_defs.h"
#include <assert.h>
#include <errno.h>
#include <stdio.h>
#include <stdarg.h>
#include <string.h>
#include <math.h>
#include <float.h>
#include "bft_error.h"
#include "bft_mem.h"
#include "bft_printf.h"
#include "cs_blas.h"
#include "cs_halo.h"
#include "cs_halo_perio.h"
#include "cs_log.h"
#include "cs_mesh.h"
#include "cs_field.h"
#include "cs_gradient.h"
#include "cs_gradient_perio.h"
#include "cs_ext_neighborhood.h"
#include "cs_mesh_quantities.h"
#include "cs_parameters.h"
#include "cs_prototypes.h"
#include "cs_timer.h"
#include "cs_parall.h"
#include "cs_matrix_building.h"
Functions | |
void | CS_PROCF (matrix, MATRIX) const |
void | CS_PROCF (matrdt, MATRDT) const |
void | cs_matrix_wrapper_scalar (int iconvp, int idiffp, int ndircp, int isym, double thetap, int imucpp, const cs_real_t coefbp[], const cs_real_t cofbfp[], const cs_real_t rovsdt[], const cs_real_t i_massflux[], const cs_real_t b_massflux[], const cs_real_t i_visc[], const cs_real_t b_visc[], const cs_real_t xcpp[], cs_real_t da[], cs_real_t xa[]) |
void | cs_matrix_wrapper_scalar_conv_diff (int iconvp, int idiffp, int ndircp, double thetap, int imucpp, const cs_real_t coefbp[], const cs_real_t cofbfp[], const cs_real_t rovsdt[], const cs_real_t i_massflux[], const cs_real_t b_massflux[], const cs_real_t i_visc[], const cs_real_t b_visc[], const cs_real_t xcpp[], cs_real_t da[], cs_real_t xa[], cs_real_t da_conv[], cs_real_t xa_conv[], cs_real_t da_diff[], cs_real_t xa_diff[]) |
void | cs_matrix_wrapper_vector (int iconvp, int idiffp, int tensorial_diffusion, int ndircp, int isym, int eb_size[4], double thetap, const cs_real_33_t coefbp[], const cs_real_33_t cofbfp[], const cs_real_33_t fimp[], const cs_real_t i_massflux[], const cs_real_t b_massflux[], const cs_real_t i_visc[], const cs_real_t b_visc[], cs_real_33_t da[], cs_real_t xa[]) |
void | cs_matrix_wrapper_tensor (int iconvp, int idiffp, int tensorial_diffusion, int ndircp, int isym, double thetap, const cs_real_66_t coefbts[], const cs_real_66_t cofbfts[], const cs_real_66_t fimp[], const cs_real_t i_massflux[], const cs_real_t b_massflux[], const cs_real_t i_visc[], const cs_real_t b_visc[], cs_real_66_t da[], cs_real_t xa[]) |
void | cs_sym_matrix_scalar (const cs_mesh_t *m, int idiffp, double thetap, const cs_real_t cofbfp[], const cs_real_t rovsdt[], const cs_real_t i_visc[], const cs_real_t b_visc[], cs_real_t *restrict da, cs_real_t *restrict xa) |
Build the diffusion matrix for a scalar field. (symmetric matrix). More... | |
void | cs_matrix_scalar (const cs_mesh_t *m, int iconvp, int idiffp, double thetap, int imucpp, const cs_real_t coefbp[], const cs_real_t cofbfp[], const cs_real_t rovsdt[], const cs_real_t i_massflux[], const cs_real_t b_massflux[], const cs_real_t i_visc[], const cs_real_t b_visc[], const cs_real_t xcpp[], cs_real_t *restrict da, cs_real_2_t *restrict xa) |
Build the advection/diffusion matrix for a scalar field (non-symmetric matrix). More... | |
void | cs_sym_matrix_vector (const cs_mesh_t *m, int idiffp, double thetap, const cs_real_33_t cofbfp[], const cs_real_33_t fimp[], const cs_real_t i_visc[], const cs_real_t b_visc[], cs_real_33_t *restrict da, cs_real_t *restrict xa) |
Build the diffusion matrix for a vector field (symmetric matrix). More... | |
void | cs_sym_matrix_tensor (const cs_mesh_t *m, int idiffp, double thetap, const cs_real_66_t cofbfts[], const cs_real_66_t fimp[], const cs_real_t i_visc[], const cs_real_t b_visc[], cs_real_66_t *restrict da, cs_real_t *restrict xa) |
Build the diffusion matrix for a tensor field (symmetric matrix). More... | |
void | cs_matrix_vector (const cs_mesh_t *m, const cs_mesh_quantities_t *mq, int iconvp, int idiffp, int eb_size[4], double thetap, const cs_real_33_t coefbp[], const cs_real_33_t cofbfp[], const cs_real_33_t fimp[], const cs_real_t i_massflux[], const cs_real_t b_massflux[], const cs_real_t i_visc[], const cs_real_t b_visc[], cs_real_33_t *restrict da, cs_real_2_t *restrict xa) |
Build the advection/diffusion matrix for a vector field (non-symmetric matrix). More... | |
void | cs_matrix_tensor (const cs_mesh_t *m, int iconvp, int idiffp, double thetap, const cs_real_66_t coefbts[], const cs_real_66_t cofbfts[], const cs_real_66_t fimp[], const cs_real_t i_massflux[], const cs_real_t b_massflux[], const cs_real_t i_visc[], const cs_real_t b_visc[], cs_real_66_t *restrict da, cs_real_2_t *restrict xa) |
Build the advection/diffusion matrix for a tensor field (non-symmetric matrix). More... | |
void | cs_matrix_time_step (const cs_mesh_t *m, int iconvp, int idiffp, int isym, const cs_real_t coefbp[], const cs_real_t cofbfp[], const cs_real_t i_massflux[], const cs_real_t b_massflux[], const cs_real_t i_visc[], const cs_real_t b_visc[], cs_real_t *restrict da) |
Build the diagonal of the advection/diffusion matrix for determining the variable time step, flow, Fourier. More... | |
void | cs_matrix_anisotropic_diffusion (const cs_mesh_t *m, const cs_mesh_quantities_t *mq, int iconvp, int idiffp, double thetap, const cs_real_33_t coefbp[], const cs_real_33_t cofbfp[], const cs_real_33_t fimp[], const cs_real_t i_massflux[], const cs_real_t b_massflux[], const cs_real_33_t i_visc[], const cs_real_t b_visc[], cs_real_33_t *restrict da, cs_real_332_t *restrict xa) |
Build the advection/diffusion matrix for a vector field with a tensorial diffusivity. More... | |
void | cs_matrix_anisotropic_diffusion_tensor (const cs_mesh_t *m, int iconvp, int idiffp, double thetap, const cs_real_66_t coefbp[], const cs_real_66_t cofbfp[], const cs_real_66_t fimp[], const cs_real_t i_massflux[], const cs_real_t b_massflux[], const cs_real_66_t i_visc[], const cs_real_t b_visc[], cs_real_66_t *restrict da, cs_real_662_t *restrict xa) |
Build the advection/diffusion matrix for a tensor field with a tensorial diffusivity. More... | |
void | cs_sym_matrix_anisotropic_diffusion (const cs_mesh_t *m, int idiffp, double thetap, const cs_real_33_t cofbfp[], const cs_real_33_t fimp[], const cs_real_33_t i_visc[], const cs_real_t b_visc[], cs_real_33_t *restrict da, cs_real_33_t *restrict xa) |
Build the diffusion matrix for a vector field with a tensorial diffusivity (symmetric matrix). More... | |
void | cs_sym_matrix_anisotropic_diffusion_tensor (const cs_mesh_t *m, int idiffp, double thetap, const cs_real_66_t cofbfp[], const cs_real_66_t fimp[], const cs_real_66_t i_visc[], const cs_real_t b_visc[], cs_real_66_t *restrict da, cs_real_66_t *restrict xa) |
Build the diffusion matrix for a tensor field with a tensorial diffusivity (symmetric matrix). More... | |
void cs_matrix_anisotropic_diffusion | ( | const cs_mesh_t * | m, |
const cs_mesh_quantities_t * | mq, | ||
int | iconvp, | ||
int | idiffp, | ||
double | thetap, | ||
const cs_real_33_t | coefbp[], | ||
const cs_real_33_t | cofbfp[], | ||
const cs_real_33_t | fimp[], | ||
const cs_real_t | i_massflux[], | ||
const cs_real_t | b_massflux[], | ||
const cs_real_33_t | i_visc[], | ||
const cs_real_t | b_visc[], | ||
cs_real_33_t *restrict | da, | ||
cs_real_332_t *restrict | xa | ||
) |
Build the advection/diffusion matrix for a vector field with a tensorial diffusivity.
The advection is upwind, the diffusion is not reconstructed. The matrix is split into a diagonal block (3x3 times number of cells) and an extra diagonal part (of dimension 2 times 3x3 the number of internal faces).
[in] | m | pointer to mesh structure |
[in] | mq | pointer to mesh quantities structure |
[in] | iconvp | indicator
|
[in] | idiffp | indicator
|
[in] | thetap | weighting coefficient for the theta-scheme,
|
[in] | coefbp | boundary condition array for the variable (implicit part - 3x3 tensor array) |
[in] | cofbfp | boundary condition array for the variable flux (implicit part - 3x3 tensor array) |
[in] | fimp | part of the diagonal |
[in] | i_massflux | mass flux at interior faces |
[in] | b_massflux | mass flux at border faces |
[in] | i_visc | at interior faces for the matrix |
[in] | b_visc | at border faces for the matrix |
[out] | da | diagonal part of the matrix |
[out] | xa | extra interleaved diagonal part of the matrix |
void cs_matrix_anisotropic_diffusion_tensor | ( | const cs_mesh_t * | m, |
int | iconvp, | ||
int | idiffp, | ||
double | thetap, | ||
const cs_real_66_t | coefbp[], | ||
const cs_real_66_t | cofbfp[], | ||
const cs_real_66_t | fimp[], | ||
const cs_real_t | i_massflux[], | ||
const cs_real_t | b_massflux[], | ||
const cs_real_66_t | i_visc[], | ||
const cs_real_t | b_visc[], | ||
cs_real_66_t *restrict | da, | ||
cs_real_662_t *restrict | xa | ||
) |
Build the advection/diffusion matrix for a tensor field with a tensorial diffusivity.
The advection is upwind, the diffusion is not reconstructed. The matrix is split into a diagonal block (3x3 times number of cells) and an extra diagonal part (of dimension 2 times 3x3 the number of internal faces).
[in] | m | pointer to mesh structure |
[in] | iconvp | indicator
|
[in] | idiffp | indicator
|
[in] | thetap | weighting coefficient for the theta-scheme,
|
[in] | coefbp | boundary condition array for the variable (implicit part - 3x3 tensor array) |
[in] | cofbfp | boundary condition array for the variable flux (implicit part - 3x3 tensor array) |
[in] | fimp | part of the diagonal |
[in] | i_massflux | mass flux at interior faces |
[in] | b_massflux | mass flux at border faces |
[in] | i_visc | at interior faces for the matrix |
[in] | b_visc | at border faces for the matrix |
[out] | da | diagonal part of the matrix |
[out] | xa | extra interleaved diagonal part of the matrix |
void cs_matrix_scalar | ( | const cs_mesh_t * | m, |
int | iconvp, | ||
int | idiffp, | ||
double | thetap, | ||
int | imucpp, | ||
const cs_real_t | coefbp[], | ||
const cs_real_t | cofbfp[], | ||
const cs_real_t | rovsdt[], | ||
const cs_real_t | i_massflux[], | ||
const cs_real_t | b_massflux[], | ||
const cs_real_t | i_visc[], | ||
const cs_real_t | b_visc[], | ||
const cs_real_t | xcpp[], | ||
cs_real_t *restrict | da, | ||
cs_real_2_t *restrict | xa | ||
) |
Build the advection/diffusion matrix for a scalar field (non-symmetric matrix).
Build the advection/diffusion matrix for a scalar field.
The advection is upwind, the diffusion is not reconstructed. The matrix is split into a diagonal block (number of cells) and an extra diagonal part (of dimension 2 time the number of internal faces).
[in] | m | pointer to mesh structure |
[in] | iconvp | indicator
|
[in] | idiffp | indicator
|
[in] | thetap | weighting coefficient for the theta-scheme,
|
[in] | imucpp | indicator
|
[in] | coefbp | boundary condition array for the variable (implicit part) |
[in] | cofbfp | boundary condition array for the variable flux (implicit part) |
[in] | rovsdt | working array |
[in] | i_massflux | mass flux at interior faces |
[in] | b_massflux | mass flux at border faces |
[in] | i_visc | at interior faces for the matrix |
[in] | b_visc | at border faces for the matrix |
[in] | xcpp | array of specific heat (Cp) |
[out] | da | diagonal part of the matrix |
[out] | xa | extra interleaved diagonal part of the matrix |
void cs_matrix_tensor | ( | const cs_mesh_t * | m, |
int | iconvp, | ||
int | idiffp, | ||
double | thetap, | ||
const cs_real_66_t | coefbts[], | ||
const cs_real_66_t | cofbfts[], | ||
const cs_real_66_t | fimp[], | ||
const cs_real_t | i_massflux[], | ||
const cs_real_t | b_massflux[], | ||
const cs_real_t | i_visc[], | ||
const cs_real_t | b_visc[], | ||
cs_real_66_t *restrict | da, | ||
cs_real_2_t *restrict | xa | ||
) |
Build the advection/diffusion matrix for a tensor field (non-symmetric matrix).
The advection is upwind, the diffusion is not reconstructed. The matrix is split into a diagonal block (6x6 times number of cells) and an extra diagonal part (of dimension 2 time the number of internal faces).
[in] | m | pointer to mesh structure |
[in] | iconvp | indicator
|
[in] | idiffp | indicator
|
[in] | thetap | weighting coefficient for the theta-scheme,
|
[in] | coefbts | boundary condition array for the variable (Implicit part - 6x6 tensor array) |
[in] | cofbfts | boundary condition array for the variable flux (Implicit part - 6x6 tensor array) |
[in] | fimp | part of the diagonal |
[in] | i_massflux | mass flux at interior faces |
[in] | b_massflux | mass flux at border faces |
[in] | i_visc | at interior faces for the matrix |
[in] | b_visc | at border faces for the matrix |
[out] | da | diagonal part of the matrix |
[out] | xa | extra interleaved diagonal part of the matrix |
void cs_matrix_time_step | ( | const cs_mesh_t * | m, |
int | iconvp, | ||
int | idiffp, | ||
int | isym, | ||
const cs_real_t | coefbp[], | ||
const cs_real_t | cofbfp[], | ||
const cs_real_t | i_massflux[], | ||
const cs_real_t | b_massflux[], | ||
const cs_real_t | i_visc[], | ||
const cs_real_t | b_visc[], | ||
cs_real_t *restrict | da | ||
) |
Build the diagonal of the advection/diffusion matrix for determining the variable time step, flow, Fourier.
[in] | m | pointer to mesh structure |
[in] | iconvp | indicator
|
[in] | idiffp | indicator
|
[in] | isym | indicator
|
[in] | coefbp | boundary condition array for the variable (implicit part) |
[in] | cofbfp | boundary condition array for the variable flux (implicit part) |
[in] | i_massflux | mass flux at interior faces |
[in] | b_massflux | mass flux at border faces |
[in] | i_visc | at interior faces for the matrix |
[in] | b_visc | at border faces for the matrix |
[out] | da | diagonal part of the matrix |
void cs_matrix_vector | ( | const cs_mesh_t * | m, |
const cs_mesh_quantities_t * | mq, | ||
int | iconvp, | ||
int | idiffp, | ||
int | eb_size[4], | ||
double | thetap, | ||
const cs_real_33_t | coefbp[], | ||
const cs_real_33_t | cofbfp[], | ||
const cs_real_33_t | fimp[], | ||
const cs_real_t | i_massflux[], | ||
const cs_real_t | b_massflux[], | ||
const cs_real_t | i_visc[], | ||
const cs_real_t | b_visc[], | ||
cs_real_33_t *restrict | da, | ||
cs_real_2_t *restrict | xa | ||
) |
Build the advection/diffusion matrix for a vector field (non-symmetric matrix).
The advection is upwind, the diffusion is not reconstructed. The matrix is split into a diagonal block (3x3 times number of cells) and an extra diagonal part (of dimension 2 time the number of internal faces).
[in] | m | pointer to mesh structure |
[in] | mq | pointer to mesh quantities structure |
[in] | iconvp | indicator
|
[in] | idiffp | indicator
|
[in] | thetap | weighting coefficient for the theta-scheme,
|
[in] | coefbp | boundary condition array for the variable (implicit part - 3x3 tensor array) |
[in] | cofbfp | boundary condition array for the variable flux (implicit part - 3x3 tensor array) |
[in] | fimp | part of the diagonal |
[in] | i_massflux | mass flux at interior faces |
[in] | b_massflux | mass flux at border faces |
[in] | i_visc | at interior faces for the matrix |
[in] | b_visc | at border faces for the matrix |
[out] | da | diagonal part of the matrix |
[out] | xa | extra interleaved diagonal part of the matrix |
void cs_matrix_wrapper_scalar | ( | int | iconvp, |
int | idiffp, | ||
int | ndircp, | ||
int | isym, | ||
double | thetap, | ||
int | imucpp, | ||
const cs_real_t | coefbp[], | ||
const cs_real_t | cofbfp[], | ||
const cs_real_t | rovsdt[], | ||
const cs_real_t | i_massflux[], | ||
const cs_real_t | b_massflux[], | ||
const cs_real_t | i_visc[], | ||
const cs_real_t | b_visc[], | ||
const cs_real_t | xcpp[], | ||
cs_real_t | da[], | ||
cs_real_t | xa[] | ||
) |
void cs_matrix_wrapper_scalar_conv_diff | ( | int | iconvp, |
int | idiffp, | ||
int | ndircp, | ||
double | thetap, | ||
int | imucpp, | ||
const cs_real_t | coefbp[], | ||
const cs_real_t | cofbfp[], | ||
const cs_real_t | rovsdt[], | ||
const cs_real_t | i_massflux[], | ||
const cs_real_t | b_massflux[], | ||
const cs_real_t | i_visc[], | ||
const cs_real_t | b_visc[], | ||
const cs_real_t | xcpp[], | ||
cs_real_t | da[], | ||
cs_real_t | xa[], | ||
cs_real_t | da_conv[], | ||
cs_real_t | xa_conv[], | ||
cs_real_t | da_diff[], | ||
cs_real_t | xa_diff[] | ||
) |
void cs_matrix_wrapper_tensor | ( | int | iconvp, |
int | idiffp, | ||
int | tensorial_diffusion, | ||
int | ndircp, | ||
int | isym, | ||
double | thetap, | ||
const cs_real_66_t | coefbts[], | ||
const cs_real_66_t | cofbfts[], | ||
const cs_real_66_t | fimp[], | ||
const cs_real_t | i_massflux[], | ||
const cs_real_t | b_massflux[], | ||
const cs_real_t | i_visc[], | ||
const cs_real_t | b_visc[], | ||
cs_real_66_t | da[], | ||
cs_real_t | xa[] | ||
) |
void cs_matrix_wrapper_vector | ( | int | iconvp, |
int | idiffp, | ||
int | tensorial_diffusion, | ||
int | ndircp, | ||
int | isym, | ||
int | eb_size[4], | ||
double | thetap, | ||
const cs_real_33_t | coefbp[], | ||
const cs_real_33_t | cofbfp[], | ||
const cs_real_33_t | fimp[], | ||
const cs_real_t | i_massflux[], | ||
const cs_real_t | b_massflux[], | ||
const cs_real_t | i_visc[], | ||
const cs_real_t | b_visc[], | ||
cs_real_33_t | da[], | ||
cs_real_t | xa[] | ||
) |
void CS_PROCF | ( | matrdt | , |
MATRDT | |||
) | const |
void CS_PROCF | ( | matrix | , |
MATRIX | |||
) | const |
void cs_sym_matrix_anisotropic_diffusion | ( | const cs_mesh_t * | m, |
int | idiffp, | ||
double | thetap, | ||
const cs_real_33_t | cofbfp[], | ||
const cs_real_33_t | fimp[], | ||
const cs_real_33_t | i_visc[], | ||
const cs_real_t | b_visc[], | ||
cs_real_33_t *restrict | da, | ||
cs_real_33_t *restrict | xa | ||
) |
Build the diffusion matrix for a vector field with a tensorial diffusivity (symmetric matrix).
The diffusion is not reconstructed. The matrix is split into a diagonal block (3x3 times number of cells) and an extra diagonal part (of dimension 3x3 the number of internal faces).
[in] | m | pointer to mesh structure |
[in] | idiffp | indicator
|
[in] | thetap | weighting coefficient for the theta-scheme,
|
[in] | cofbfp | boundary condition array for the variable flux (implicit part - 3x3 tensor array) |
[in] | fimp | |
[in] | i_visc | at interior faces for the matrix |
[in] | b_visc | at border faces for the matrix |
[out] | da | diagonal part of the matrix |
[out] | xa | extra interleaved diagonal part of the matrix |
void cs_sym_matrix_anisotropic_diffusion_tensor | ( | const cs_mesh_t * | m, |
int | idiffp, | ||
double | thetap, | ||
const cs_real_66_t | cofbfp[], | ||
const cs_real_66_t | fimp[], | ||
const cs_real_66_t | i_visc[], | ||
const cs_real_t | b_visc[], | ||
cs_real_66_t *restrict | da, | ||
cs_real_66_t *restrict | xa | ||
) |
Build the diffusion matrix for a tensor field with a tensorial diffusivity (symmetric matrix).
Build the diffusion matrix for a vector field with a tensorial diffusivity (symmetric matrix).
The diffusion is not reconstructed. The matrix is split into a diagonal block (3x3 times number of cells) and an extra diagonal part (of dimension 3x3 the number of internal faces).
[in] | m | pointer to mesh structure |
[in] | idiffp | indicator
|
[in] | thetap | weighting coefficient for the theta-scheme,
|
[in] | cofbfp | boundary condition array for the variable flux (implicit part - 3x3 tensor array) |
[in] | fimp | |
[in] | i_visc | at interior faces for the matrix |
[in] | b_visc | at border faces for the matrix |
[out] | da | diagonal part of the matrix |
[out] | xa | extra interleaved diagonal part of the matrix |
void cs_sym_matrix_scalar | ( | const cs_mesh_t * | m, |
int | idiffp, | ||
double | thetap, | ||
const cs_real_t | cofbfp[], | ||
const cs_real_t | rovsdt[], | ||
const cs_real_t | i_visc[], | ||
const cs_real_t | b_visc[], | ||
cs_real_t *restrict | da, | ||
cs_real_t *restrict | xa | ||
) |
Build the diffusion matrix for a scalar field. (symmetric matrix).
The diffusion is not reconstructed. The matrix is split into a diagonal block (number of cells) and an extra diagonal part (of dimension the number of internal faces).
[in] | m | pointer to mesh structure |
[in] | idiffp | indicator
|
[in] | thetap | weighting coefficient for the theta-scheme,
|
[in] | cofbfp | boundary condition array for the variable flux (implicit part) |
[in] | rovsdt | working array |
[in] | i_visc | at interior faces for the matrix |
[in] | b_visc | at border faces for the matrix |
[out] | da | diagonal part of the matrix |
[out] | xa | extra diagonal part of the matrix |
void cs_sym_matrix_tensor | ( | const cs_mesh_t * | m, |
int | idiffp, | ||
double | thetap, | ||
const cs_real_66_t | cofbfts[], | ||
const cs_real_66_t | fimp[], | ||
const cs_real_t | i_visc[], | ||
const cs_real_t | b_visc[], | ||
cs_real_66_t *restrict | da, | ||
cs_real_t *restrict | xa | ||
) |
Build the diffusion matrix for a tensor field (symmetric matrix).
The diffusion is not reconstructed. The matrix is split into a diagonal block (6x6 times number of cells) and an extra diagonal part (of dimension the number of internal faces).
[in] | m | pointer to mesh structure |
[in] | idiffp | indicator
|
[in] | thetap | weighting coefficient for the theta-scheme,
|
[in] | cofbfts | boundary condition array for the variable flux (Implicit part - 6x6 tensor array) |
[in] | fimp | part of the diagonal |
[in] | i_visc | at interior faces for the matrix |
[in] | b_visc | at border faces for the matrix |
[out] | da | diagonal part of the matrix |
[out] | xa | extra interleaved diagonal part of the matrix |
void cs_sym_matrix_vector | ( | const cs_mesh_t * | m, |
int | idiffp, | ||
double | thetap, | ||
const cs_real_33_t | cofbfp[], | ||
const cs_real_33_t | fimp[], | ||
const cs_real_t | i_visc[], | ||
const cs_real_t | b_visc[], | ||
cs_real_33_t *restrict | da, | ||
cs_real_t *restrict | xa | ||
) |
Build the diffusion matrix for a vector field (symmetric matrix).
The diffusion is not reconstructed. The matrix is split into a diagonal block (3x3 times number of cells) and an extra diagonal part (of dimension the number of internal faces).
[in] | m | pointer to mesh structure |
[in] | idiffp | indicator
|
[in] | thetap | weighting coefficient for the theta-scheme,
|
[in] | cofbfp | boundary condition array for the variable flux (implicit part - 3x3 tensor array) |
[in] | fimp | |
[in] | i_visc | at interior faces for the matrix |
[in] | b_visc | at border faces for the matrix |
[out] | da | diagonal part of the matrix |
[out] | xa | extra interleaved diagonal part of the matrix |