Cell linear system preparation of a scalar equation defined on cells.
More...
|
module | type_ls_map |
| Type declaration associated to the numerical grid mapping of a cell linear system.
|
|
|
subroutine | mod_add_diagonal_cell_matrix::add_diagonal_cell_matrix (matrix, stencil_size, work_array, equation_ls_map) |
| Add a term to the diagonal of a matrix for a cell-discretized equation.
|
|
subroutine | mod_add_rhs_cell::add_rhs_cell (rhs, array, equation_ls_map) |
| Add a term to the right-hand side for a cell-discretized equation or determine \( \phi^{n+1} \) for a fully explicit cell transport implementation.
|
|
subroutine | mod_finalize_cell_linear_system::finalize_cell_linear_system (matrix, rhs, stencil_size, equation_ls_map) |
| Finalize a cell linear system. The routine checks the if a diagonal element of the matrix is null (typically a corner of the domain), set it to 1 and the right-hand side to 0.
|
|
subroutine | mod_initialize_cell_linear_system::initialize_cell_linear_system (matrix, rhs, ls_map) |
| Allocate matrix and right-hand-side of a cell linear system.
|
|
subroutine | mod_time_advance_explicitly::time_advance_explicitly (matrix, rhs, array, equation_ls_map, stencil_size, boundary_condition) |
| Determine \( \phi^{n+1} \) for a fully explicit cell transport implementation.
|
|
◆ add_diagonal_cell_matrix()
subroutine mod_add_diagonal_cell_matrix::add_diagonal_cell_matrix |
( |
double precision, dimension(:), intent(inout) | matrix, |
|
|
integer, intent(in) | stencil_size, |
|
|
double precision, dimension(nx,ny,nz), intent(in) | work_array, |
|
|
type(t_ls_map), intent(in) | equation_ls_map ) |
This routine takes cell field elements and adds them to the corresponding diagonal.
◆ add_rhs_cell()
subroutine mod_add_rhs_cell::add_rhs_cell |
( |
double precision, dimension(:), intent(inout) | rhs, |
|
|
double precision, dimension(nx,ny,nz), intent(in) | array, |
|
|
type(t_ls_map), intent(in) | equation_ls_map ) |
- Note
- The
add_rhs_cell
routine takes cell field elements and adds them to the right-hand side of a linear system.
- The
time_advance_explicitly
routine solves \(\alpha_{i,j,k} \phi^{n+1} = RHS_{i,j,k} \) and applies the appropriate boundary conditions.
◆ finalize_cell_linear_system()
subroutine mod_finalize_cell_linear_system::finalize_cell_linear_system |
( |
double precision, dimension(:), intent(inout) | matrix, |
|
|
double precision, dimension(:), intent(inout) | rhs, |
|
|
integer, intent(in) | stencil_size, |
|
|
type(t_ls_map), intent(in) | equation_ls_map ) |
- Todo
- improve unused nodes values
◆ time_advance_explicitly()
subroutine mod_time_advance_explicitly::time_advance_explicitly |
( |
double precision, dimension(:), intent(in) | matrix, |
|
|
double precision, dimension(:), intent(in) | rhs, |
|
|
double precision, dimension(nx,ny,nz), intent(out) | array, |
|
|
type(t_ls_map), intent(in) | equation_ls_map, |
|
|
integer, intent(in) | stencil_size, |
|
|
type(t_boundary_condition), intent(in) | boundary_condition ) |
- Note
- The
time_advance_explicitly
routine solves \(\alpha_{i,j,k} \phi^{n+1} = RHS_{i,j,k} \) and applies the appropriate boundary conditions.