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. | |
| 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).
| [in,out] | matrix | matrix 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_variable | instance of immersed_boundary_condition associated to \( \phi^{n} \) |
| [in] | equation_isd_target | immersed 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_n | the field at time \(t^{n}\) |
| [in,out] | work_cell_field | |
| [in] | boundary_condition | |
| [in] | temporal_coefficient | the 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 \). |