0.6.0
Loading...
Searching...
No Matches
mod_discretize_cell_diffusion_term::discretize_cell_diffusion Interface Reference

Public Member Functions

subroutine discretize_cell_diffusion_term (matrix, equation_diffusion_term_discretization_type, equation_diffusion_term_scheme, equation_diffusion_explicit_time_order_discretization, equation_has_immersed_boundaries, ibc_variable, equation_isd_target, equation_stencil, equation_ls_map, time_step, equation_cfl_cell_diffusion, scalar_field_n, work_cell_field, boundary_condition, temporal_coefficient, diffusion_coefficient, face_diffusion_coefficient, extra_inside_gradient_coef_diff)
 Discretize the advection term.
 

Member Function/Subroutine Documentation

◆ discretize_cell_diffusion_term()

subroutine mod_discretize_cell_diffusion_term::discretize_cell_diffusion::discretize_cell_diffusion_term ( double precision, dimension(:), intent(inout) matrix,
integer, intent(in) equation_diffusion_term_discretization_type,
integer, intent(in) equation_diffusion_term_scheme,
integer, intent(in) equation_diffusion_explicit_time_order_discretization,
logical, intent(in) equation_has_immersed_boundaries,
type(t_immersed_boundary_condition), dimension(:), intent(in) ibc_variable,
integer, dimension(:), intent(in) equation_isd_target,
type(t_cell_stencil), intent(in) equation_stencil,
type(t_ls_map), intent(in) equation_ls_map,
double precision, intent(in) time_step,
double precision, intent(inout) equation_cfl_cell_diffusion,
double precision, dimension(:,:,:), intent(in) scalar_field_n,
double precision, dimension(:,:,:), intent(inout) work_cell_field,
type(t_boundary_condition), intent(in) boundary_condition,
double precision, dimension(:,:,:), intent(in), optional temporal_coefficient,
double precision, dimension(:,:,:), intent(in), optional diffusion_coefficient,
type(t_face_field), intent(inout), optional face_diffusion_coefficient,
double precision, dimension(:,:,:), intent(in), optional extra_inside_gradient_coef_diff )

Discretize the advection term.

The term writes:

\begin{align} \nabla \cdot ( D \nabla \phi)_{0,0} =& \frac{1}{\delta x_0} \frac{D_{+\frac12,0}}{\delta x_{+\frac12}} \phi_{+1,0} -\frac{1}{\delta x_0} \left(\frac{D_{+\frac12,0}}{\delta x_{+\frac12}} + \frac{D_{-\frac12,0}}{\delta x_{-\frac12}}\right) \phi_{0,0} +\frac{1}{\delta x_0} \frac{D_{-\frac12,0}}{\delta x_{-\frac12}} \phi_{-1,0} \\ +& \frac{1}{\delta y_0} \frac{D_{0,+\frac12}}{\delta y_{+\frac12}} \phi_{0,+1} -\frac{1}{\delta y_0} \left(\frac{D_{0,+\frac12}}{\delta y_{+\frac12}} + \frac{D_{0,-\frac12}}{\delta y_{-\frac12}}\right) \phi_{0,0} +\frac{1}{\delta y_0} \frac{D_{0,-\frac12}}{\delta y_{-\frac12}} \phi_{0,-1} \,. \end{align}

Either cell or face diffusion coefficients must be given as an argument. When cell diffusion coefficient is given, they are interpolated on face nodes using interpolate_diffusion_coef (harmonic interpolation).

Note
  • As described in Implicit cell diffusion term, a central scheme of order 2 (or 4) is used (regular mesh).
  • No treatment of boundary condition is done here for implicit formulation.
  • Boundary condition is also done here for explicit sub iteration formulation.
  • First order Euler time discretization is used for explicit diffusion sub iterations if \(\delta t > \delta t_{max cfl}\).
  • \( \nabla \cdot (D \nabla p) \) for constant coefficient Poisson equation, hereby called Pconst, (A fast pressure-correction methdo for incompressible two-fluid flows, Dodd & Ferrante 2014) is also performed.
  • Pconst is discretized with a second order explicit central difference.
  • Pconst must be given face diffusion coefficients (hard coded before calling this subroutine).
Parameters
[in,out]matrixmatrix of linear system
[in]equation_diffusion_term_discretization_type
[in]equation_diffusion_term_scheme
[in]equation_diffusion_explicit_time_order_discretization
[in]equation_has_immersed_boundaries
[in]ibc_variableinstance of immersed_boundary_condition associated to \( \phi^{n} \)
[in]equation_isd_targetimmersed subdomain target array of the equation
[in]equation_stencil
[in]equation_ls_map
[in]time_step
[in,out]equation_cfl_cell_diffusion
[in]scalar_field_nthe field at time \(t^{n}\)
[in,out]work_cell_field
[in]boundary_condition
[in]temporal_coefficientthe coefficient that is in front of the \(\partial_t \phi\) term.
[in]diffusion_coefficient
[in,out]face_diffusion_coefficient(opt)
[in]extra_inside_gradient_coef_diff(opt): a coefficient ( \(c\)) that modifies the diffusion coefficient such that \( k' = (1+c)*k \).

The documentation for this interface was generated from the following file: