version 0.6.0
Face linear system preparation

Namespaces

module  type_face_ls_map
 Type decalaration associated to the mapping of a face vector linear system on the numerical grid.
 

Functions

subroutine mod_add_diagonal_face_matrix::add_diagonal_face_matrix (matrix, navier_stencil_size, work_array, navier_ls_map)
 Add a term to the diagonal of a matrix for an equation defined on faces.
 
subroutine mod_add_rhs_face::add_rhs_face (rhs, work_array, navier_ls_map)
 Add arrays to Right-Hand-Side corresponding to an equation discretized on faces. More...
 
subroutine mod_finalize_face_linear_system::finalize_face_linear_system (matrix, rhs, stencil_size, equation_face_ls_map)
 Detect unset rows and set them ready to pass ls solvers. More...
 
pure subroutine mod_initialize_face_linear_system::initialize_face_linear_system (matrix, rhs, ls_map)
 Allocate matrix and right-hand side of a face linear system.
 
subroutine mod_time_advance_explicitly_face::time_advance_explicitly_face (matrix, rhs, work_array)
 Determine \( \mathbf{u}^{n+1} \) for an equation discretized on faces and with a fully explicit implementation. More...
 

Detailed Description

Function Documentation

◆ add_rhs_face()

subroutine mod_add_rhs_face::add_rhs_face ( double precision, dimension(:), intent(inout)  rhs,
type(t_face_field), intent(in)  work_array,
type(t_face_ls_map), intent(in)  navier_ls_map 
)

!!

Note
  • The add_rhs_face routine takes cell field elements and adds them to the right-hand side of a linear system.

◆ finalize_face_linear_system()

subroutine mod_finalize_face_linear_system::finalize_face_linear_system ( double precision, dimension(:), intent(inout)  matrix,
double precision, dimension(:), intent(inout)  rhs,
integer, intent(in)  stencil_size,
type(t_face_ls_map), intent(in)  equation_face_ls_map 
)

Unset rows are detected by checking diagonal element values of that equals to 0d0. Then set the row to identity and the right-hand side to 0.

Todo:
improve unused nodes values (extrapolation)

◆ time_advance_explicitly_face()

subroutine mod_time_advance_explicitly_face::time_advance_explicitly_face ( double precision, dimension(:), intent(in)  matrix,
double precision, dimension(:), intent(in)  rhs,
type(t_face_field), intent(inout)  work_array 
)

!!

Note
  • The time_advance_explicitly_face routine solves \( \alpha_{i,j,k} \u^{n+1} = RHS_{i,j,k} \) and applies the appropriate boundary conditions.