version 0.6.0
Cell linear system preparation

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

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.