Face linear system preparation of a vectorial equation defined on faces.
More...
|
module | type_face_ls_map |
| Type decalaration associated to the mapping of a face vector linear system on the numerical grid.
|
|
|
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.
|
|
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.
|
|
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.
|
|
◆ 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.