version 0.6.0
Loading...
Searching...
No Matches
Cell linear system preparation

Cell linear system preparation of a scalar equation defined on cells. More...

Namespaces

module  type_ls_map
 Type declaration associated to the numerical grid mapping of a cell linear system.
 

Functions

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.
 

Detailed Description

Function Documentation

◆ 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.