This file contains a routine which performs the initialization of a front. More...
Go to the source code of this file.
Functions/Subroutines | |
subroutine | _qrm_init_front (qrm_mat, fnum, par, work) |
This routine initializes a front. More... | |
This file contains a routine which performs the initialization of a front.
Definition in file qrm_init_front.F90.
subroutine _qrm_init_front | ( | type(_qrm_spmat_type), target | qrm_mat, |
integer | fnum, | ||
logical | par, | ||
integer, dimension(:), optional, target | work | ||
) |
This routine initializes a front.
Front initialization consists in creating the structure of the front and all the data structures that allow the assembly of the front itself.
Assume the column permutation is:
(/7, 3, 8, 1, 9, 5, 6, 2/)
Values from the original matrix A:
7 3 1 5 6 +---------- 3| a a a a 6| a a a 2| a a
Values from child X:
7 3 8 9 2 +---------- 5| x x x x x 1| x x x x 7| x x x
Values from child Y:
3 1 5 +------ 4| y y y 8| y y 9| y
Final result:
7 3 8 1 9 5 6 2 +---------------- 3| a a a a 6| a a a 5| x x x x x 1| x x x x 4| y y y 7| x x x 8| y y 2| a a 9| y
For a description of the following fields see _qrm_fdata_mod::_qrm_front_type
front%stair=(/3, 5, 6, 7, 7, 9/) front%cols=(/7, 3, 8, 1, 9, 5, 6, 2/) front%rows=(/3, 6, 5, 1, 4, 7, 8, 2, 9/) front%colmap(/4, 8, 2, 0, 6, 7, 1, 3, 5/) X%rowmap=(/3, 4, 6/) Y%rowmap=(/5, 7, 9/)
[in,out] | qrm_mat | the big problem data structure |
[in] | fnum | the id of the front to be activated |
[in] | par | whether this front will be treated by multiple threads or not. this is needed because in the case where the front belongs to a sequential subtree, it can be assembled immediatebly; otherwise, references will be computed for later assembly |
[in] | work | optional workspace |
Definition at line 116 of file qrm_init_front.F90.
References i, qrm_error_mod::qrm_err_act_restore(), qrm_error_mod::qrm_err_act_save(), qrm_error_mod::qrm_err_check(), qrm_ib_, and qrm_nb_.
Referenced by _qrm_activate_front(), and _qrm_do_subtree().