|
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"
Macros | |
| #define | THR_MIN 128 |
Functions | |
| void | matrix (const cs_int_t *const iconvp, const cs_int_t *const idiffp, const cs_int_t *const ndircp, const cs_int_t *const isym, const cs_real_t *const thetap, const cs_int_t *const 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 | matrxv (const cs_int_t *const iconvp, const cs_int_t *const idiffp, const cs_int_t *const ndircp, const cs_int_t *const isym, const cs_real_t *const thetap, const cs_real_33_t coefbu[], const cs_real_33_t cofbfu[], 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 | matrdt (const cs_int_t *const iconvp, const cs_int_t *const idiffp, const cs_int_t *const 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 da[]) |
| void | matrvv (const cs_int_t *const iconvp, const cs_int_t *const idiffp, const cs_int_t *const ndircp, const cs_int_t *const isym, const cs_real_t *const thetap, const cs_real_33_t coefbu[], const cs_real_33_t cofbfu[], 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 da[], cs_real_332_t xa[]) |
| void | cs_sym_matrix_scalar (const cs_mesh_t *m, int idiffp, int ndircp, 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, 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 *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, int ndircp, double thetap, const cs_real_33_t cofbfu[], 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_matrix_vector (const cs_mesh_t *m, int iconvp, int idiffp, int ndircp, double thetap, const cs_real_33_t coefbu[], const cs_real_33_t cofbfu[], 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_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, int iconvp, int idiffp, int ndircp, double thetap, const cs_real_33_t coefbu[], const cs_real_33_t cofbfu[], 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_sym_matrix_anisotropic_diffusion (const cs_mesh_t *m, int idiffp, int ndircp, double thetap, const cs_real_33_t cofbfu[], 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... | |
| #define THR_MIN 128 |
| void cs_matrix_anisotropic_diffusion | ( | const cs_mesh_t * | m, |
| int | iconvp, | ||
| int | idiffp, | ||
| int | ndircp, | ||
| double | thetap, | ||
| const cs_real_33_t | coefbu[], | ||
| const cs_real_33_t | cofbfu[], | ||
| 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] | iconvp | indicator
|
| [in] | idiffp | indicator
|
| [in] | ndircp | indicator
|
| [in] | thetap | weighting coefficient for the theta-scheme,
|
| [in] | coefbu | boundary condition array for the variable (Implicit part - 3x3 tensor array) |
| [in] | cofbfu | boundary condition array for the variable flux (Implicit part - 3x3 tensor array) |
| [in] | fimp | |
| [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, | ||
| 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 *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] | ndircp | 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_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, |
| int | iconvp, | ||
| int | idiffp, | ||
| int | ndircp, | ||
| double | thetap, | ||
| const cs_real_33_t | coefbu[], | ||
| const cs_real_33_t | cofbfu[], | ||
| 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] | iconvp | indicator
|
| [in] | idiffp | indicator
|
| [in] | ndircp | indicator
|
| [in] | thetap | weighting coefficient for the theta-scheme,
|
| [in] | coefbu | boundary condition array for the variable (Implicit part - 3x3 tensor array) |
| [in] | cofbfu | boundary condition array for the variable flux (Implicit part - 3x3 tensor 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 |
| [out] | da | diagonal part of the matrix |
| [out] | xa | extra interleaved diagonal part of the matrix |
| void cs_sym_matrix_anisotropic_diffusion | ( | const cs_mesh_t * | m, |
| int | idiffp, | ||
| int | ndircp, | ||
| double | thetap, | ||
| const cs_real_33_t | cofbfu[], | ||
| 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] | idiffp | indicator
|
| [in] | ndircp | indicator
|
| [in] | thetap | weighting coefficient for the theta-scheme,
|
| [in] | coefbu | boundary condition array for the variable (Implicit part - 3x3 tensor array) |
| [in] | cofbfu | boundary condition array for the variable flux (Implicit part - 3x3 tensor array) |
| [in] | fimp | |
| [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_sym_matrix_scalar | ( | const cs_mesh_t * | m, |
| int | idiffp, | ||
| int | ndircp, | ||
| 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] | ndircp | 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_vector | ( | const cs_mesh_t * | m, |
| int | idiffp, | ||
| int | ndircp, | ||
| double | thetap, | ||
| const cs_real_33_t | cofbfu[], | ||
| 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] | ndircp | indicator
|
| [in] | thetap | weighting coefficient for the theta-scheme,
|
| [in] | cofbfu | boundary condition array for the variable flux (Implicit part - 3x3 tensor 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 interleaved diagonal part of the matrix |
| void matrdt | ( | const cs_int_t *const | iconvp, |
| const cs_int_t *const | idiffp, | ||
| const cs_int_t *const | 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 | da[] | ||
| ) |
| void matrix | ( | const cs_int_t *const | iconvp, |
| const cs_int_t *const | idiffp, | ||
| const cs_int_t *const | ndircp, | ||
| const cs_int_t *const | isym, | ||
| const cs_real_t *const | thetap, | ||
| const cs_int_t *const | 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[] | ||
| ) |
(end ignore by Doxygen)
| void matrvv | ( | const cs_int_t *const | iconvp, |
| const cs_int_t *const | idiffp, | ||
| const cs_int_t *const | ndircp, | ||
| const cs_int_t *const | isym, | ||
| const cs_real_t *const | thetap, | ||
| const cs_real_33_t | coefbu[], | ||
| const cs_real_33_t | cofbfu[], | ||
| 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 | da[], | ||
| cs_real_332_t | xa[] | ||
| ) |
| void matrxv | ( | const cs_int_t *const | iconvp, |
| const cs_int_t *const | idiffp, | ||
| const cs_int_t *const | ndircp, | ||
| const cs_int_t *const | isym, | ||
| const cs_real_t *const | thetap, | ||
| const cs_real_33_t | coefbu[], | ||
| const cs_real_33_t | cofbfu[], | ||
| 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[] | ||
| ) |
1.8.7