This file gathers functions that solve advection diffusion equations with source terms for one time step for a scalar, vector or tensor variable. More...
#include "cs_defs.h"
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <float.h>
#include <math.h>
#include <mpi.h>
#include "bft_mem.h"
#include "bft_error.h"
#include "bft_printf.h"
#include "cs_array.h"
#include "cs_balance.h"
#include "cs_blas.h"
#include "cs_convection_diffusion.h"
#include "cs_dispatch.h"
#include "cs_field.h"
#include "cs_field_pointer.h"
#include "cs_halo.h"
#include "cs_log.h"
#include "cs_math.h"
#include "cs_mesh.h"
#include "cs_gradient.h"
#include "cs_mesh_quantities.h"
#include "cs_multigrid.h"
#include "cs_parameters.h"
#include "cs_porous_model.h"
#include "cs_prototypes.h"
#include "cs_timer.h"
#include "cs_parall.h"
#include "cs_matrix_building.h"
#include "cs_matrix_default.h"
#include "cs_sles.h"
#include "cs_sles_default.h"
#include "cs_equation_iterative_solve.h"
Functions | |
void | cs_equation_iterative_solve_scalar (int idtvar, int iterns, int f_id, const char *name, int iescap, int imucpp, cs_real_t normp, cs_equation_param_t *eqp, const cs_real_t pvara[], const cs_real_t pvark[], const cs_field_bc_coeffs_t *bc_coeffs, const cs_real_t i_massflux[], const cs_real_t b_massflux[], const cs_real_t i_viscm[], const cs_real_t b_viscm[], const cs_real_t i_visc[], const cs_real_t b_visc[], cs_real_6_t viscel[], const cs_real_2_t weighf[], const cs_real_t weighb[], int icvflb, const int icvfli[], const cs_real_t rovsdt[], cs_real_t smbrp[], cs_real_t pvar[], cs_real_t dpvar[], const cs_real_t xcpp[], cs_real_t eswork[]) |
Solve an advection diffusion equation with source terms for one time step for the variable ![]() | |
void | cs_equation_iterative_solve_vector (int idtvar, int iterns, int f_id, const char *name, int ivisep, int iescap, cs_equation_param_t *eqp, const cs_real_t pvara[][3], const cs_real_t pvark[][3], const cs_field_bc_coeffs_t *bc_coeffs_v, const cs_real_t i_massflux[], const cs_real_t b_massflux[], const cs_real_t i_viscm[], const cs_real_t b_viscm[], const cs_real_t i_visc[], const cs_real_t b_visc[], const cs_real_t i_secvis[], const cs_real_t b_secvis[], cs_real_t viscel[][6], const cs_real_2_t weighf[], const cs_real_t weighb[], int icvflb, const int icvfli[], cs_real_t fimp[][3][3], cs_real_t smbrp[][3], cs_real_t pvar[][3], cs_real_t eswork[][3]) |
This function solves an advection diffusion equation with source terms for one time step for the vector variable ![]() | |
void | cs_equation_iterative_solve_tensor (int idtvar, int f_id, const char *name, cs_equation_param_t *eqp, const cs_real_t pvara[][6], const cs_real_t pvark[][6], const cs_field_bc_coeffs_t *bc_coeffs_ts, const cs_real_t i_massflux[], const cs_real_t b_massflux[], const cs_real_t i_viscm[], const cs_real_t b_viscm[], const cs_real_t i_visc[], const cs_real_t b_visc[], cs_real_t viscel[][6], const cs_real_2_t weighf[], const cs_real_t weighb[], int icvflb, const int icvfli[], cs_real_t fimp[][6][6], cs_real_t smbrp[][6], cs_real_t pvar[][6]) |
This function solves an advection diffusion equation with source terms for one time step for the symmetric tensor variable ![]() | |
This file gathers functions that solve advection diffusion equations with source terms for one time step for a scalar, vector or tensor variable.
void cs_equation_iterative_solve_scalar | ( | int | idtvar, |
int | iterns, | ||
int | f_id, | ||
const char * | name, | ||
int | iescap, | ||
int | imucpp, | ||
cs_real_t | normp, | ||
cs_equation_param_t * | eqp, | ||
const cs_real_t | pvara[], | ||
const cs_real_t | pvark[], | ||
const cs_field_bc_coeffs_t * | bc_coeffs, | ||
const cs_real_t | i_massflux[], | ||
const cs_real_t | b_massflux[], | ||
const cs_real_t | i_viscm[], | ||
const cs_real_t | b_viscm[], | ||
const cs_real_t | i_visc[], | ||
const cs_real_t | b_visc[], | ||
cs_real_6_t | viscel[], | ||
const cs_real_2_t | weighf[], | ||
const cs_real_t | weighb[], | ||
int | icvflb, | ||
const int | icvfli[], | ||
const cs_real_t | rovsdt[], | ||
cs_real_t | smbrp[], | ||
cs_real_t | pvar[], | ||
cs_real_t | dpvar[], | ||
const cs_real_t | xcpp[], | ||
cs_real_t | eswork[] | ||
) |
Solve an advection diffusion equation with source terms for one time step for the variable .
The equation reads:
This equation is rewritten as:
where and
It is in fact solved with the following iterative process:
where
Be careful, it is forbidden to modify here!
Please refer to the codits section of the theory guide for more informations.
[in] | idtvar | indicator of the temporal scheme |
[in] | iterns | external sub-iteration number |
[in] | f_id | field id (or -1) |
[in] | name | associated name if f_id < 0, or nullptr |
[in] | iescap | compute the predictor indicator if 1 |
[in] | imucpp | indicator
|
[in] | normp | Reference norm to solve the system (optional) if negative: recomputed here |
[in] | eqp | pointer to a cs_equation_param_t structure which contains variable calculation options |
[in] | pvara | variable at the previous time step ![]() |
[in] | pvark | variable at the previous sub-iteration ![]() |
[in] | bc_coeffs | boundary condition structure for the variable |
[in] | i_massflux | mass flux at interior faces |
[in] | b_massflux | mass flux at boundary faces |
[in] | i_viscm | ![]() |
[in] | b_viscm | ![]() |
[in] | i_visc | ![]() |
[in] | b_visc | ![]() |
[in] | viscel | symmetric cell tensor ![]() |
[in] | weighf | internal face weight between cells i j in case of tensor diffusion |
[in] | weighb | boundary face weight for cells i in case of tensor diffusion |
[in] | icvflb | global indicator of boundary convection flux
|
[in] | icvfli | boundary face indicator array of convection flux
|
[in] | rovsdt | ![]() |
[in] | smbrp | Right hand side ![]() |
[in,out] | pvar | current variable |
[out] | dpvar | last variable increment |
[in] | xcpp | array of specific heat (Cp) |
[out] | eswork | prediction-stage error estimator (if iescap > 0) |
void cs_equation_iterative_solve_tensor | ( | int | idtvar, |
int | f_id, | ||
const char * | name, | ||
cs_equation_param_t * | eqp, | ||
const cs_real_t | pvara[][6], | ||
const cs_real_t | pvark[][6], | ||
const cs_field_bc_coeffs_t * | bc_coeffs_ts, | ||
const cs_real_t | i_massflux[], | ||
const cs_real_t | b_massflux[], | ||
const cs_real_t | i_viscm[], | ||
const cs_real_t | b_viscm[], | ||
const cs_real_t | i_visc[], | ||
const cs_real_t | b_visc[], | ||
cs_real_t | viscel[][6], | ||
const cs_real_2_t | weighf[], | ||
const cs_real_t | weighb[], | ||
int | icvflb, | ||
const int | icvfli[], | ||
cs_real_t | fimp[][6][6], | ||
cs_real_t | smbrp[][6], | ||
cs_real_t | pvar[][6] | ||
) |
This function solves an advection diffusion equation with source terms for one time step for the symmetric tensor variable .
The equation reads:
This equation is rewritten as:
where and
It is in fact solved with the following iterative process:
where
Be careful, it is forbidden to modify here!
[in] | idtvar | indicator of the temporal scheme |
[in] | f_id | field id (or -1) |
[in] | name | associated name if f_id < 0, or nullptr |
[in] | eqp | pointer to a cs_equation_param_t structure which contains variable calculation options |
[in] | pvara | variable at the previous time step ![]() |
[in] | pvark | variable at the previous sub-iteration ![]() |
[in] | bc_coeffs_ts | boundary condition structure for the variable |
[in] | i_massflux | mass flux at interior faces |
[in] | b_massflux | mass flux at boundary faces |
[in] | i_viscm | ![]() |
[in] | b_viscm | ![]() |
[in] | i_visc | ![]() |
[in] | b_visc | ![]() |
[in] | viscel | symmetric cell tensor ![]() |
[in] | weighf | internal face weight between cells i j in case of tensor diffusion |
[in] | weighb | boundary face weight for cells i in case of tensor diffusion |
[in] | icvflb | global indicator of boundary convection flux
|
[in] | icvfli | boundary face indicator array of convection flux
|
[in,out] | fimp | ![]() |
[in,out] | smbrp | Right hand side ![]() |
[in,out] | pvar | current variable |
void cs_equation_iterative_solve_vector | ( | int | idtvar, |
int | iterns, | ||
int | f_id, | ||
const char * | name, | ||
int | ivisep, | ||
int | iescap, | ||
cs_equation_param_t * | eqp, | ||
const cs_real_t | pvara[][3], | ||
const cs_real_t | pvark[][3], | ||
const cs_field_bc_coeffs_t * | bc_coeffs_v, | ||
const cs_real_t | i_massflux[], | ||
const cs_real_t | b_massflux[], | ||
const cs_real_t | i_viscm[], | ||
const cs_real_t | b_viscm[], | ||
const cs_real_t | i_visc[], | ||
const cs_real_t | b_visc[], | ||
const cs_real_t | i_secvis[], | ||
const cs_real_t | b_secvis[], | ||
cs_real_t | viscel[][6], | ||
const cs_real_2_t | weighf[], | ||
const cs_real_t | weighb[], | ||
int | icvflb, | ||
const int | icvfli[], | ||
cs_real_t | fimp[][3][3], | ||
cs_real_t | smbrp[][3], | ||
cs_real_t | pvar[][3], | ||
cs_real_t | eswork[][3] | ||
) |
This function solves an advection diffusion equation with source terms for one time step for the vector variable .
The equation reads:
This equation is rewritten as:
where and
It is in fact solved with the following iterative process:
where
Be careful, it is forbidden to modify here!
[in] | idtvar | indicator of the temporal scheme |
[in] | iterns | external sub-iteration number |
[in] | f_id | field id (or -1) |
[in] | name | associated name if f_id < 0, or nullptr |
[in] | ivisep | indicator to take ![]()
|
[in] | iescap | compute the predictor indicator if >= 1 |
[in] | eqp | pointer to a cs_equation_param_t structure which contains variable calculation options |
[in] | pvara | variable at the previous time step ![]() |
[in] | pvark | variable at the previous sub-iteration ![]() pvara (usually pvar= pvara ) |
[in] | bc_coeffs_v | boundary condition structure for the variable |
[in] | i_massflux | mass flux at interior faces |
[in] | b_massflux | mass flux at boundary faces |
[in] | i_viscm | ![]() |
[in] | b_viscm | ![]() |
[in] | i_visc | ![]() |
[in] | b_visc | ![]() |
[in] | i_secvis | secondary viscosity at interior faces |
[in] | b_secvis | secondary viscosity at boundary faces |
[in] | viscel | symmetric cell tensor ![]() |
[in] | weighf | internal face weight between cells i j in case of tensor diffusion |
[in] | weighb | boundary face weight for cells i in case of tensor diffusion |
[in] | icvflb | global indicator of boundary convection flux
|
[in] | icvfli | boundary face indicator array of convection flux
|
[in,out] | fimp | ![]() |
[in,out] | smbrp | Right hand side ![]() |
[in,out] | pvar | current variable |
[out] | eswork | prediction-stage error estimator (if iescap >= 0) |